1. 程式人生 > >python 字串(str)方法

python 字串(str)方法

                                         強大自己是唯一獲得幸福的途徑,這是長遠的,而非當下的玩樂!


以下會列出python3.6所有方法

str.capitalize()     -- >  首字母大寫,並且後面全小寫

>>> name = "zwdsaAAAz"
>>> print(name.capitalize())
Zwdsaaaaz
>>>

str.casefold()    -- > 轉換字串中所有大寫字元為小寫。 

>>> name = "ZwdsaADDAAz"
>>> print(name.casefold())
zwdsaaddaaz

注:lower() 方法只對ASCII編碼,也就是‘A-Z’有效,對於其他語言(非漢語或英文)中把大寫轉換為小寫的情況只能用 casefold() 方法。 

str.center(width, fillchar=None)  -- > 自定義寬度並使字串居中,空白可自定義填充

>>> name = "zwzlp"
>>> print(name.center(20,'#'))
#######zwzlp########
>>>

str.count(sub, start=None, end=None)   -- >   統計自定義start起始位置到end位置出現的sub次數

>>> name = "zwzlp"
>>> print(name.count('z',0,3))
2
>>>

 

str.encode(encoding='utf-8', errors='strict') 

 -- > 

encoding -- 要使用的編碼,如"UTF-8"。

errors -- 設定不同錯誤的處理方案。預設為 'strict',意為編碼錯誤引起一個UnicodeError。 其他可能得值有 'ignore', 'replace', 'xmlcharrefreplace', 'backslashreplace' 以及通過 codecs.register_error() 註冊的任何值。

 

>>> str = "這是一個例子"
>>> print(str.encode('ASCII','strict'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-5: ordinal not in range(128)
>>> print(str.encode('GBK','strict'))
b'\xd5\xe2\xca\xc7\xd2\xbb\xb8\xf6\xc0\xfd\xd7\xd3'
>>> print(str.encode('UTF-8','strict'))
b'\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\x80\xe4\xb8\xaa\xe4\xbe\x8b\xe5\xad\x90'

 注:報錯是因為ascii無法對照中文。

str.endswith(suffix, start=None, end=None)   -- > 判斷字串是否以指定字尾結尾,是返回True,否則返回False

>>> name = "zwzlp"
>>> print(name.endswith("lp"))
True
>>> print(name.endswith("wzlp"))
True
>>> print(name.endswith("wz"))
False
>>> print(name.endswith("wz",0,3))
True
>>>

str.expandtabs(self, tabsize=8)    -- > 把字串中的 tab 符號('\t')轉為空格,tab 符號('\t')預設的空格數是 8

name = "z   w   z   l   p"
print(name.expandtabs())

str.find(sub, start=None, end=None)  -- > 檢測字串中是否包含子字串 str,存在就返回索引,不存在返回-1

>>> name = "zwzlp"
>>> print(name.find("w"))
1
>>> print(name.find("w",2,4))
-1
>>>

str.format(self, *args, **kwargs)    -- >  

格式化字串,增強了字串格式化的功能。

基本語法是通過 {} 和 : 來代替以前的 % 。

format 函式可以接受不限個引數,位置可以不按順序。

直接傳值

>>> "{} {}".format("hello", "world")
'hello world'
>>> "{1} {1}".format("hello", "world")
'world world'
>>> "{1} {1} {0} ,{1}.".format("hello", "world")
'world world hello ,world.'
>>>

其他傳值方法

>>> print("名字: {name},地址: {url}".format(name="zw",url="zwzlp.com"))
名字: zw,地址: zwzlp.com
>>>
>>> dic1 = {"name": "lp", "url": "lp.com"}
>>> print("名字: {name},地址: {url}".format(**dic1))
名字: lp,地址: lp.com
>>>
>>> l1 = ["zwzlp","zwzlp.com"]
>>> print("名字: {0[0]},地址: {0[1]}".format(l1))
名字: zwzlp,地址: zwzlp.com
>>>

str.format_map(mapping)     -- > 用法類似於format(),這個溜了溜了。

str.index(sub, start=None, end=None)   -- >  等同於find,但是index找不到會報錯,用find

str.isalnum()                    -- >     符串是否由字母和數字組成

>>> name = "zwzlp1314"
>>> print(name.isalnum())
True
>>>

str.isalpha()                    -- >  檢測字串是否只由字母組成

>>> name = "zwzlp1314"
>>> print(name.isalpha())
False
>>>

str.isdecimal()              -- >  檢查字串是否只包含十進位制字元。這種方法只存在於unicode物件

>>> num = "zwzlp1314"
>>> print(num.isdecimal())
False
>>> num = "1314"
>>> print(num.isdecimal())
True
>>>

str.isdigit()              -- >   檢測字串是否只由數字組成

>>> num = "zwzlp1314"
>>> print(num.isdigit())
False
>>> num = "1314"
>>> print(num.isdigit())
True
>>>

str.isidentifier()    -- > 

str.islower()       -- >   檢測字串是否由小寫字母組成

>>> name = "zwzlp"
>>> print(name.islower())
True
>>> name = "Zwzlp"
>>> print(name.islower())
False
>>>

str.isnumeric()     -- >  檢測字串是否只由數字組成。這種方法是隻針對unicode物件。

>>> num = "zwzlp1314"
>>> print(num.isnumeric())
False
>>> num = "1314"
>>> print(num.isnumeric())
True
>>>

str.isprintable()     -- >   判斷字串中所有的字串都是可以通過repr表示成字串,或者字串是空的,返回True,否則返回False

>>> name.isprintable()
True
>>> name = ""
>>> name.isprintable()
True
>>> chr(1000000).isprintable()
False
>>>

str.isspace()    -- > 檢測字串是否只由空白字元組成。

>>> str = "       "
>>> print (str.isspace())
True
>>>
>>> str = "zwz lp le"
>>> print (str.isspace())
False
>>>

str.istitle()      -- >  檢測字串中所有的單詞拼寫首字母是否為大寫,且其他字母為小寫。

>>> str = "This Is String Example...Wow!!!"
>>> print (str.istitle())
True
>>> str = "This is string example....wow!!!"
>>> print (str.istitle())
False
>>>

str.isupper()      -- >  檢測字串中所有的字母是否都為大寫

>>> str = "THIS IS STRING EXAMPLE"
>>> print (str.isupper())
True
>>> str = "THIS is string example"
>>> print (str.isupper())
False
>>>

str.join(iterable)     -- >  將序列中的元素以指定的字元連線生成一個新的字串。

>>> s1 = "-"
>>> s2 = ""
>>> s = ("z", "w", "z", "l", "p")
>>> print(s1.join(s))
z-w-z-l-p
>>> print(s2.join(s))
zwzlp
>>>

str.ljust(width, fillchar=None)     -- >  返回一個原字串左對齊,並使用空格填充至指定長度的新字串。如果指定的長度小於原字串的長度則返回原字串。 

>>> name = "zwzlp"
>>> print(name.ljust(20,'-'))
zwzlp---------------
>>>

str.lower()         -- >  轉換字串中所有大寫字元為小寫

>>> name = "ZwZLp"
>>> print(name.lower())
zwzlp
>>>

str.lstrip(chars=None)        -- > 截掉字串左邊的空格或指定字元。

>>> name = "            zwzlp"
>>> print(name.lstrip())
zwzlp
>>> name = "11111111111zwzlp  "
>>> print(name.lstrip('1'))
zwzlp
>>>

str.maketrans(*args, **kwargs)    -- >     用於建立字元對映的轉換表,對於接受兩個引數的最簡單的呼叫方式,第一個引數是字串,表示需要轉換的字元,第二個引數也是字串表示轉換的目標。

兩個字串的長度必須相同,為一一對應的關係。

>>> intab = 'zl'
>>> outtab = '26'
>>> name = 'zwzlp'
>>> print(name.maketrans(intab,outtab))
{122: 50, 108: 54}
>>> trtab = name.maketrans(intab,outtab)
>>> print(name.translate(trtab))
2w26p
>>>

 str.partition(sep)      -- >  用來根據指定的分隔符將字串進行分割。

如果字串包含指定的分隔符,則返回一個3元的元組,第一個為分隔符左邊的子串,第二個為分隔符本身,第三個為分隔符右邊的子串。

>>> name = "z.w.z.lp"
>>> print(name.partition('.'))
('z', '.', 'w.z.lp')
>>>

str.replace(old, new, count=None)    -- >  把字串中的 old(舊字串) 替換成 new(新字串),如果指定第三個引數max,則替換不超過 max 次。

>>> name = "zwz  lp   zwzlp.com"
>>> print(name.replace("zwz", "zw"))
zw  lp   zwlp.com
>>> print(name.replace("zwz", "zw", 1))
zw  lp   zwzlp.com
>>>

str.rfind(sub, start=None, end=None)   -- > 字串最後一次出現的位置,如果沒有匹配項則返回-1

>>> name = "zwzlp"
>>> print(name.rfind("z"))
2
>>> print(name.rfind("z",0,1))
0
>>> print(name.rfind("l",0,1))
-1
>>>

str.rindex(sub, start=None, end=None)    -- >  等同於rfind,但是找不到會報錯,用rfind

str.rjust(width, fillchar=None)      -- >    返回一個原字串右對齊,並使用空格填充至長度 width 的新字串。如果指定的長度小於字串的長度則返回原字串。

>>> name = "zwzlp"
>>> print(name.rjust(20,'-'))
---------------zwzlp
>>>

str.rpartition(sep)    -- >  類似於 partition() 方法,只是該方法是從目標字串的末尾也就是右邊開始搜尋分割符。。

如果字串包含指定的分隔符,則返回一個3元的元組,第一個為分隔符左邊的子串,第二個為分隔符本身,第三個為分隔符右邊的子串。 

>>> name = "z.w.z.lp"
>>> print(name.rpartition('.'))
('z.w.z', '.', 'lp')
>>>

str.rsplit(sep=None, maxsplit=-1)   -- >  通過指定分隔符對字串進行分割並返回一個列表,預設分隔符為所有空字元,包括空格、換行(\n)、製表符(\t)等。類似於 split() 方法,只不過是從字串最後面開始分割。

>>> name = "zwz lp love"
>>> print(name.rsplit())
['zwz', 'lp', 'love']
>>> print(name.rsplit('l',1))   
['zwz lp ', 'ove']           ## 由於rsplit是從右邊開始,所以右邊的l沒了
>>>

str.rstrip(chars=None)      -- >  刪除 string 字串末尾的指定字元(預設為空格).

>>> name = "   zwz  lp   "
>>> print(name.rstrip())
   zwz  lp                     #末尾沒空格了
>>>
>>> name = "   zwz lp -----"
>>> print(name.rstrip('-'))
   zwz lp                      #除了lp後面的一個空格,-都沒了
>>>

str.split(sep=None, maxsplit=-1)    -- >   指定分隔符對字串進行切片,如果引數num 有指定值,則僅分隔 num 個子字串

>>> name = "zwz lp love"
>>> print(name.split())
['zwz', 'lp', 'love']
>>> print(name.split('l',1))
['zwz ', 'p love']
>>> print(name.split('z'))
['', 'w', ' lp love']
>>>

str.splitlines(keepends=None)    -- > 按照行('\r', '\r\n', \n')分隔,返回一個包含各行作為元素的列表,如果引數 keepends 為 False,不包含換行符,如果為 True,則保留換行符。

>>> name = "z\rwz\nlp\n"
>>> print(name.splitlines())
['z', 'wz', 'lp']                  ## 預設為False
>>> print(name.splitlines(True))
['z\r', 'wz\n', 'lp\n']
>>>

str.startswith(prefix, start=None, end=None)    -- > 用於檢查字串是否是以指定子字串開頭,如果是則返回 True,否則返回 False。如果引數 beg 和 end 指定值,則在指定範圍內檢查。

>>> name = "zwzlp"
>>> print(name.startswith('z'))
True
>>> print(name.startswith('Z'))          #區分大小寫
False
>>> print(name.startswith('Z', 1, 5))    #指定範圍
False
>>>

str.strip(chars=None)      -- >     用於移除字串頭尾指定的字元(預設為空格)或字元序列。

注:該方法只能刪除開頭或是結尾的字元,不能刪除中間部分的字元。

>>> name = "    zw  zl p  "
>>> print(name.strip())                #預設刪除空格
zw  zl p
>>> name = " --- z w - zlp---"         
>>> print(name.strip('-'))             #由於開頭多了一個空格,沒有刪除
 --- z w - zlp
>>> name = "--- z w - zlp---"          #頂格寫則刪除
>>> print(name.strip('-'))
 z w - zlp
>>>

str.swapcase()            -- >  用於對字串的大小寫字母進行轉換

>>> name = "ZwzLP"
>>> print(name.swapcase())
zWZlp
>>>

str.title()               -- >  返回"標題化"的字串,就是說所有單詞的首個字母轉化為大寫,其餘字母均為小寫。

>>> name = "zwzLP"
>>> print(name.title())
Zwzlp
>>>

str.translate(table)        -- >  根據引數table給出的表(包含 256 個字元)轉換字串的字元,要過濾掉的字元放到 deletechars 引數中。

>>> bytes_tabtrans = bytes.maketrans(b'abcdefghijklmnopqrstuvwxyz', b'ABCDEFGHIJKLMNOPQRSTUVWXYZ')
>>> print(b'zwzlp'.translate(bytes_tabtrans, b'o'))
b'ZWZLP'
>>>
>>> intab = 'zl'
>>> outtab = '26'
>>> name = 'zwzlp'
>>> print(name.maketrans(intab,outtab))
{122: 50, 108: 54}
>>> trtab = name.maketrans(intab,outtab)
>>> print(name.translate(trtab))
2w26p
>>>

str.upper()        -- > 將字串中的小寫字母轉為大寫字母。

>>> name = "zwZlp"
>>> print(name.upper())
ZWZLP
>>>

 str.zfill(width)     -- >   返回指定長度的字串,原字串右對齊,前面填充0。

>>> name = "zwzlp"
>>> print(name.zfill(20))
000000000000000zwzlp
>>>