一、字符串
1、定義和初始化
In?[4]:?s?=?"hello?python"
In?[4]:?s?=?"hello?python"In?[5]:?s
Out[5]:?'hello?python'In?[6]:?s?=?'hello?python'In?[7]:?s
Out[7]:?'hello?python'In?[8]:?s?=?'''hello?python'''In?[9]:?s
Out[9]:?'hello?python'In?[10]:?s?=?"""hello?python"""In?[11]:?s
Out[11]:?'hello?python'
???? python中單雙引號沒有區別,只能定義單行字符串
???? 三引號能定義多行字符串
???? 單雙三引號是有區別的
In?[24]:?s?=?'hello??pythonFile?"<ipython-input-24-54fb5309d2d0>",?line?1s?=?'hello??python^
SyntaxError:?EOL?while?scanning?string?literalIn?[25]:?s?=?'hello??python?\????????#?續寫上一行...:?i?like?python'In?[26]:?s
Out[26]:?'hello??python?i?like?python'In?[22]:?s?=?"""hello?python...:?i?like?python"""In?[23]:?s
Out[23]:?'hello?python\ni?like?python'
工廠函數str():
In?[12]:?print(str.__doc__)
str(object='')?->?str
str(bytes_or_buffer[,?encoding[,?errors]])?->?strCreate?a?new?string?object?from?the?given?object.?If?encoding?or
errors?is?specified,?then?the?object?must?expose?a?data?buffer
that?will?be?decoded?using?the?given?encoding?and?error?handler.
Otherwise,?returns?the?result?of?object.__str__()?(if?defined)
or?repr(object).
encoding?defaults?to?sys.getdefaultencoding().
errors?defaults?to?'strict'.In?[13]:?s?=?str("abc")In?[14]:?s
Out[14]:?'abc'In?[16]:?s?=?str([1,?2])In?[17]:?s
Out[17]:?'[1,?2]'In?[18]:?s?=?str(1)In?[19]:?s
Out[19]:?'1'
2、字符串轉義
In?[32]:?s?=?"i?like?\n?python"In?[33]:?s
Out[33]:?'i?like?\n?python'In?[34]:?s?=?"i?like?\npython"In?[35]:?s
Out[35]:?'i?like?\npython'In?[36]:?s?=?'I'm?xj'File?"<ipython-input-36-0b8827686244>",?line?1s?=?'I'm?xj'^
SyntaxError:?invalid?syntaxIn?[37]:?s?=?'I\'m?xj'In?[38]:?s
Out[38]:?"I'm?xj"In?[50]:?path?=?'c:\windows\nt\system32'????#?這里的\n可能會被轉義成換行符In?[51]:?path
Out[51]:?'c:\\windows\nt\\system32'In?[52]:?path?=?'c:\\windows\\nt\\system32'??#?一般需要這么寫In?[53]:?path
Out[53]:?'c:\\windows\\nt\\system32'In?[54]:?path?=?r'c:\windows\nt\system32'???#?加r(raw)能表示此字符串是自然字符串,不會轉義In?[55]:?path
Out[55]:?'c:\\windows\\nt\\system32'
二、字符串的操作
1、索引操作
In?[59]:?s?=?"I'm?xjj"In?[60]:?s[1]
Out[60]:?"'"In?[61]:?s[2]
Out[61]:?'m'In?[62]:?s[3]
Out[62]:?'?'
2、str的連接和分割
?1)str的連接
str.join()
???? 使用str將可迭代對象的str元素連接成1個str
???? 參數是元素都為str的可迭代對象,接收者是分隔符
In?[71]:?print(str.join.__doc__)
S.join(iterable)?->?strReturn?a?string?which?is?the?concatenation?of?the?strings?in?the
iterable.??The?separator?between?elements?is?S.In?[81]:?lst?=?["I",?"am",?"xxj"]????#?可迭代對象的元素必須是strIn?[82]:?''.join(lst)
Out[82]:?'Iamxxj'In?[83]:?'?'.join(lst)
Out[83]:?'I?am?xxj'In?[84]:?','.join(lst)
Out[84]:?'I,am,xxj'In?[85]:?',!'.join(lst)
Out[85]:?'I,!am,!xxj'In?[86]:?'?,?'.join(lst)
Out[86]:?'I?,?am?,?xxj'In?[87]:?lst?=?[1,?2,?3]In?[88]:?','.join(lst)
---------------------------------------------------------------------------
TypeError?????????????????????????????????Traceback?(most?recent?call?last)
<ipython-input-88-b4c772e35459>?in?<module>()
---->?1?','.join(lst)TypeError:?sequence?item?0:?expected?str?instance,?int?found
?+
In?[93]:?"hello"?+?"python"
Out[93]:?'hellopython'In?[94]:?str1?=?"xxj"In?[95]:?str1?+?1
---------------------------------------------------------------------------
TypeError?????????????????????????????????Traceback?(most?recent?call?last)
<ipython-input-95-2584ac008f78>?in?<module>()
---->?1?str1?+?1TypeError:?must?be?str,?not?intIn?[96]:?str1?+?"hello"
Out[96]:?'xxjhello'In?[97]:?str1?+?"?hello"
Out[97]:?'xxj?hello'
?2)分割
str.split()
?? ? 不原地修改,返回使用分隔符分隔的列表
In?[99]:?print(s.split.__doc__)
S.split(sep=None,?maxsplit=-1)?->?list?of?stringsReturn?a?list?of?the?words?in?S,?using?sep?as?the
delimiter?string.??If?maxsplit?is?given,?at?most?maxsplit
splits?are?done.?If?sep?is?not?specified?or?is?None,?any
whitespace?string?is?a?separator?and?empty?strings?are
removed?from?the?result.In?[98]:?s?=?"I?love?python"In?[100]:?s.split("o")??????????????#?默認分隔所有
Out[100]:?['I?l',?'ve?pyth',?'n']In?[101]:?s.split("o",?1)???????????#?指定分隔一次
Out[101]:?['I?l',?'ve?python']In?[102]:?s.split()
Out[102]:?['I',?'love',?'python']In?[102]:?s.split()?????????????????#?默認分隔符為1個或多個空格
Out[102]:?['I',?'love',?'python']In?[103]:?s.split("ov")????????????#?可以使用多個字符串當空格
Out[103]:?['I?l',?'e?python']In?[159]:?s.split("A")????????????#?不包含分隔符號時,不分隔原str
Out[159]:?['I?love?python']In?[104]:?s?=?"I?love??????python"In?[105]:?s.split()
Out[105]:?['I',?'love',?'python']In?[108]:?s.split("?")??????????????#?使用一個空格當做分隔符
Out[108]:?['I',?'love',?'',?'',?'',?'',?'',?'python']In?[110]:?s.split(maxsplit=1)
Out[110]:?['I',?'love??????python']In?[111]:?s.split()
Out[111]:?['I',?'love',?'python']
str.rsplit():
????? 從右往左開始分隔;
????? 當不指定maxsplit參數時,str.rsplit()和str.split()完全一樣,當str.split()效率更高
In?[122]:?s?=?"I?love?python"In?[123]:?s.rsplit("o")
Out[123]:?['I?l',?'ve?pyth',?'n']In?[124]:?s.rsplit("o",?1)
Out[124]:?['I?love?pyth',?'n']
str.splitlines():
????? 按行分隔,返回結果可以選擇帶不帶換行符;返回值是一個列表
In?[136]:?print(str.splitlines.__doc__)
S.splitlines([keepends])?->?list?of?stringsReturn?a?list?of?the?lines?in?S,?breaking?at?line?boundaries.
Line?breaks?are?not?included?in?the?resulting?list?unless?keepends
is?given?and?true.In?[137]:?s?=?"""I?am?xxj...:?i?love?python"""In?[138]:?s
Out[138]:?'I?am?xxj\ni?love?python'In?[139]:?s.splitlines()
Out[139]:?['I?am?xxj',?'i?love?python']In?[140]:?s.splitlines(true)
---------------------------------------------------------------------------
NameError?????????????????????????????????Traceback?(most?recent?call?last)
<ipython-input-140-dfaf8d28775c>?in?<module>()
---->?1?s.splitlines(true)NameError:?name?'true'?is?not?definedIn?[141]:?s.splitlines(True)
Out[141]:?['I?am?xxj\n',?'i?love?python']
str.partition():
????? 總是返回一個三元組,它被傳入的分隔符分隔1次,分隔成(head, sep,tail)
In?[145]:?print(str.partition.__doc__)
S.partition(sep)?->?(head,?sep,?tail)Search?for?the?separator?sep?in?S,?and?return?the?part?before?it,
the?separator?itself,?and?the?part?after?it.??If?the?separator?is?not
found,?return?S?and?two?empty?strings.In?[147]:?s?=?"I?love?python"In?[148]:?s.partition("o")
Out[148]:?('I?l',?'o',?'ve?python')
str.rpartition()是str.partition()從右往左的版本:
In?[153]:?s.rpartition("o")
Out[153]:?('I?love?pyth',?'o',?'n')In?[154]:?s.rpartition("A")
Out[154]:?('',?'',?'I?love?python')In?[155]:?"A".rpartition("A")
Out[155]:?('',?'A',?'')In?[156]:?"".rpartition("A")
Out[156]:?('',?'',?'')In?[157]:?"?".rpartition("A")
Out[157]:?('',?'',?'?')
3、str大小寫轉換與排版
In?[2]:?s?=?"I?love?python"In?[3]:?s.upper()
Out[3]:?'I?LOVE?PYTHON'In?[5]:?s.lower()
Out[5]:?'i?love?python'In?[6]:?s.title()????????#?首字母全部大寫
Out[6]:?'I?Love?Python'In?[8]:?s.capitalize()???#?把首字母大寫
Out[8]:?'I?love?python'In?[10]:?print(s.center.__doc__)???????#?在給定寬度下居中,可以使用單個字符填充
S.center(width[,?fillchar])?->?strReturn?S?centered?in?a?string?of?length?width.?Padding?is
done?using?the?specified?fill?character?(default?is?a?space)In?[11]:?s.center(50)
Out[11]:?'??????????????????I?love?python???????????????????'In?[12]:?s.center(50,?"#")
Out[12]:?'##################I?love?python###################'In?[13]:?s.center(50,?"#%")
---------------------------------------------------------------------------
TypeError?????????????????????????????????Traceback?(most?recent?call?last)
<ipython-input-13-4aa39ce1c3b3>?in?<module>()
---->?1?s.center(50,?"#%")TypeError:?The?fill?character?must?be?exactly?one?character?longIn?[19]:?s
Out[19]:?'I?love?python'In?[20]:?s.zfill(5)
Out[20]:?'I?love?python'In?[21]:?s.zfill(50)????????#?用0填充
Out[21]:?'0000000000000000000000000000000000000I?love?python'In?[23]:?print(s.casefold.__doc__)
S.casefold()?->?strReturn?a?version?of?S?suitable?for?caseless?comparisons.In?[25]:?s
Out[25]:?'I?love?python'In?[26]:?s.casefold()?????#?返回一個統一大小寫的str,在不同平臺有不同的表現形式
Out[26]:?'i?love?python'In?[27]:?s.swapcase()?????#?交換大小寫
Out[27]:?'i?LOVE?PYTHON'In?[36]:?"\t".expandtabs()??#?默認將\t轉換為8個空格
Out[36]:?'????????'In?[40]:?"\t".expandtabs(8)
Out[40]:?'????????'In?[37]:?"\t".expandtabs(3)
Out[37]:?'???'
4、修改
str.replace()
????? 使用new str替換old str,返回新的str
In?[44]:?help(str.replace.__doc__)
No?Python?documentation?found?for?'S.replace(old,?new[,?count])?->?str\n\nReturn?a?copy?of?S?with?all?occurrences?of?substring\nold?replaced?by?new.??If?the?optional?argument?count?is\ngiven,?only?the?first?count?occurrences?are?replaced.'.
Use?help()?to?get?the?interactive?help?utility.
Use?help(str)?for?help?on?the?str?class.In?[47]:?s
Out[47]:?'I?love?python'In?[48]:?s.replace("love",?"give?up")
Out[48]:?'I?give?up?python'In?[49]:?s.replace("o",?0)
---------------------------------------------------------------------------
TypeError?????????????????????????????????Traceback?(most?recent?call?last)
<ipython-input-49-184707d40696>?in?<module>()
---->?1?s.replace("o",?0)TypeError:?replace()?argument?2?must?be?str,?not?intIn?[50]:?s.replace("o",?"O")
Out[50]:?'I?lOve?pythOn'In?[51]:?s.replace("o",?"O",?-1)
Out[51]:?'I?lOve?pythOn'In?[52]:?s.replace("o",?"O",?0)
Out[52]:?'I?love?python'In?[53]:?s.replace("o",?"O",?1)
Out[53]:?'I?lOve?python'In?[54]:?s.replace("o",?"O",?5)
Out[54]:?'I?lOve?pythOn'
str.strip()
str.rstrip()
str.lstrip()
????? 移除str首尾指定字符集合內的字符
In?[62]:?print(str.strip.__doc__)
S.strip([chars])?->?strReturn?a?copy?of?the?string?S?with?leading?and?trailing
whitespace?removed.
If?chars?is?given?and?not?None,?remove?characters?in?chars?instead.In?[66]:?s?=?"?I?love?python??"In?[67]:?s
Out[67]:?'?I?love?python??'In?[68]:?s.strip()???????????#?默認去掉首尾的空白字符
Out[68]:?'I?love?python'In?[69]:?s.lstrip()??????????#?去掉首部的空白字符
Out[69]:?'I?love?python??'In?[70]:?s.rstrip()??????????#?去掉尾部的空白字符
Out[70]:?'?I?love?python'In?[76]:?s?=?"\n?\r?\t?haha?\n?\r\t"In?[77]:?s
Out[77]:?'\n?\r?\t?haha?\n?\r\t'In?[78]:?s.strip()
Out[78]:?'haha'In?[84]:?s?=?"I?love?python?haha"In?[86]:?s.strip("a")
Out[86]:?'I?love?python?hah'In?[87]:?s.strip("ha")
Out[87]:?'I?love?python?'In?[88]:?s.strip("on")
Out[88]:?'I?love?python?haha'In?[89]:?s
Out[89]:?'I?love?python?haha'In?[91]:?s?=?"{{?haha?haha?}}"In?[92]:?s
Out[92]:?'{{?haha?haha?}}'In?[94]:?s.strip("{}")?
Out[94]:?'?haha?haha?'In?[95]:?s.strip("{}s")??????#?移除指定字符集合里的字符
Out[95]:?'?haha?haha?'In?[96]:?s.lstrip("{}s")
Out[96]:?'?haha?haha?}}'
str.ljust()
str.rjust()
????? 左\右對其并填充
In?[98]:?print(str.ljust.__doc__)
S.ljust(width[,?fillchar])?->?strReturn?S?left-justified?in?a?Unicode?string?of?length?width.?Padding?is
done?using?the?specified?fill?character?(default?is?a?space).In?[105]:?s?=?"xxj"In?[106]:?s.ljust(3)
Out[106]:?'xxj'In?[107]:?s.ljust(1)
Out[107]:?'xxj'In?[108]:?s.ljust(10)
Out[108]:?'xxj???????'In?[109]:?s.ljust(10,?"A")
Out[109]:?'xxjAAAAAAA'In?[110]:?s.ljust(10,?"Ab")
---------------------------------------------------------------------------
TypeError?????????????????????????????????Traceback?(most?recent?call?last)
<ipython-input-110-b45e86b2e828>?in?<module>()
---->?1?s.ljust(10,?"Ab")TypeError:?The?fill?character?must?be?exactly?one?character?longIn?[111]:?s.rjust(10,?"A")
Out[111]:?'AAAAAAAxxj'
5、查找
str.index()
str.rindex()
str.find()
str.rfind()
str.count()
In?[32]:?print(str.find.__doc__)
S.find(sub[,?start[,?end]])?->?intReturn?the?lowest?index?in?S?where?substring?sub?is?found,
such?that?sub?is?contained?within?S[start:end].??Optional
arguments?start?and?end?are?interpreted?as?in?slice?notation.Return?-1?on?failure.In?[23]:?s?=?"I?am?xxj,?i?love?python"In?[24]:?s.find("x")
Out[24]:?5In?[25]:?s.find("xx")
Out[25]:?5In?[26]:?s.find("o")
Out[26]:?13In?[27]:?s.find("o",?13,?13)
Out[27]:?-1In?[28]:?s.find("o",?13,?14)
Out[28]:?13In?[29]:?s.find("o",?14,?50)
Out[29]:?21In?[30]:?s.find("o",?14,?21)
Out[30]:?-1In?[33]:?s.find("A")
Out[33]:?-1In?[34]:?s.find("o",?-1,?-15)
Out[34]:?-1In?[35]:?s.find("o",?-15,?-1)
Out[35]:?13In?[37]:?s.rfind("o")
Out[37]:?21
str.index()和str.find()的區別:
?????? 當給定的值不在查找范圍時,str.index()會拋出ValueError而str.find()返回-1
?????? str的count()方法和list、tuple的count()方法不一樣,也可以限制查找范圍
?????? str有rindex(),list、tuple沒有
6、判斷
str.startswith()
str.endswith()
?????? 給定范圍內的str是否以給定substr開頭或結尾
In?[64]:?s
Out[64]:?'I?am?xxj,?i?love?python'In?[66]:?s.startswith("i")
Out[66]:?FalseIn?[67]:?s.startswith("I")
Out[67]:?TrueIn?[68]:?s.startswith("I?am?x")
Out[68]:?TrueIn?[69]:?s.endswith("n")
Out[69]:?TrueIn?[70]:?s.endswith("thon")
Out[70]:?TrueIn?[71]:?s.startswith("x",?5)
Out[71]:?TrueIn?[72]:?s.startswith("xxj",?5)
Out[72]:?TrueIn?[73]:?s.startswith("xxj",?5,?5)
Out[73]:?FalseIn?[74]:?s.startswith("xxj",?5,?7)
Out[74]:?FalseIn?[75]:?s.startswith("xxj",?5,?8)
Out[75]:?True
7、isxxx() 判斷類函數
??????
看懂方法的意思就知道用途In?[80]:?s.isalnum()
Out[80]:?FalseIn?[81]:?"abc123".isalnum()
Out[81]:?TrueIn?[82]:?"abc123".isalpha()
Out[82]:?FalseIn?[83]:?"abc".isalpha()
Out[83]:?TrueIn?[84]:?"abc".isdecimal()
Out[84]:?FalseIn?[85]:?"120".isdecimal()
Out[85]:?TrueIn?[86]:?"120.123".isdecimal()
Out[86]:?FalseIn?[87]:?"120.123".isdigit()
Out[87]:?FalseIn?[88]:?"abc,".isdigit()
Out[88]:?FalseIn?[89]:?".,".isdigit()
Out[89]:?FalseIn?[90]:?"120123".isdigit()
Out[90]:?TrueIn?[91]:?"120123".isspace()
Out[91]:?FalseIn?[92]:?"\t".isspace()
Out[92]:?True
轉載于:https://blog.51cto.com/xiexiaojun/1930608
新人創作打卡挑戰賽發博客就能抽獎!定制產品紅包拿不停!
總結
以上是生活随笔為你收集整理的【Python】07、python内置数据结构之字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。