成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python 的內(nèi)置字符串方法(收藏專用)

dinfer / 1027人閱讀

摘要:徐徐徐徐將字符串轉(zhuǎn)換成小寫,其僅對編碼的字母有效。中文中文但這個(gè)方法并不完美將字符串所有字母變?yōu)榇髮懀瑫詣雍雎圆豢赊D(zhuǎn)成大寫的字符。甩甩徐字符串編碼徐參考資料內(nèi)置類型字符串方法

字符串處理是非常常用的技能,但 Python 內(nèi)置字符串方法太多,常常遺忘,為了便于快速參考,特地依據(jù) Python 3.5.1 給每個(gè)內(nèi)置方法寫了示例并進(jìn)行了歸類,便于大家索引。
PS: 可以點(diǎn)擊概覽內(nèi)的綠色標(biāo)題進(jìn)入相應(yīng)分類或者通過右側(cè)邊欄文章目錄快速索引相應(yīng)方法。

概覽 字符串大小寫轉(zhuǎn)換

str.capitalize()

str.lower()

str.casefold()

str.swapcase()

str.title()

str.upper()

字符串格式輸出

str.center(width[, fillchar])

str.ljust(width[, fillchar]); str.rjust(width[, fillchar])

str.zfill(width)

str.expandtabs(tabsize=8)

str.format(^args, ^^kwargs)

str.format_map(mapping)

字符串搜索定位與替換

str.count(sub[, start[, end]])

str.find(sub[, start[, end]]); str.rfind(sub[, start[, end]])

str.index(sub[, start[, end]]); str.rindex(sub[, start[, end]])

str.replace(old, new[, count])

str.lstrip([chars]); str.rstrip([chars]); str.strip([chars])

static str.maketrans(x[, y[, z]]); str.translate(table)

字符串的聯(lián)合與分割

str.join(iterable)

str.partition(sep); str.rpartition(sep)

str.split(sep=None, maxsplit=-1); str.rsplit(sep=None, maxsplit=-1)

str.splitlines([keepends])

字符串條件判斷

str.endswith(suffix[, start[, end]]); str.startswith(prefix[, start[, end]])

str.isalnum()

str.isalpha()

str.isdecimal(); str.isdigit(); str.isnumeric()

str.isidentifier()

str.islower()

str.isprintable()

str.isspace()

str.istitle()

str.isupper()

字符串編碼

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

大小寫轉(zhuǎn)換 str.capitalize()

將首字母轉(zhuǎn)換成大寫,需要注意的是如果首字沒有大寫形式,則返回原字符串。

"adi dog".capitalize()
# "Adi dog"

"abcd 徐".capitalize()
# "Abcd 徐"

"徐 abcd".capitalize()
# "徐 abcd"

"?".capitalize()
# "SS"
str.lower()

將字符串轉(zhuǎn)換成小寫,其僅對 ASCII 編碼的字母有效。

"DOBI".lower()
# "dobi"

"?".lower()   # "?" 為德語小寫字母,其有另一種小寫 "ss", lower 方法無法轉(zhuǎn)換
# "?"

"徐 ABCD".lower()
# "徐 abcd"
str.casefold()

將字符串轉(zhuǎn)換成小寫,Unicode 編碼中凡是有對應(yīng)的小寫形式的,都會轉(zhuǎn)換。

"DOBI".casefold()
# "dobi"

"?".casefold()   #德語中小寫字母 ? 等同于小寫字母 ss, 其大寫為 SS 
# "ss"
str.swapcase()

對字符串字母的大小寫進(jìn)行反轉(zhuǎn)。

"徐Dobi a123 ?".swapcase()
#: "徐dOBI A123 SS"    這里的 ? 被轉(zhuǎn)成 SS 是一種大寫

但需要注意的是 s.swapcase().swapcase() == s 不一定為真:

u"xb5"
# "μ"

u"xb5".swapcase()
# "Μ"

u"xb5".swapcase().swapcase()
# "μ"

hex(ord(u"xb5".swapcase().swapcase()))
Out[154]: "0x3bc"

這里 "Μ"(是 mu 不是 M) 的小寫正好與 "μ" 的寫法一致。

str.title()

將字符串中每個(gè)“單詞”首字母大寫。其判斷“單詞”的依據(jù)則是基于空格和標(biāo)點(diǎn),所以應(yīng)對英文撇好所有格或一些英文大寫的簡寫時(shí),會出錯(cuò)。

"Hello world".title()
# "Hello World"

"中文abc def 12gh".title()
# "中文Abc Def 12Gh"

# 但這個(gè)方法并不完美:
"they"re bill"s friends from the UK".title()
# "They"Re Bill"S Friends From The Uk"
str.upper()

將字符串所有字母變?yōu)榇髮?,會自動忽略不可轉(zhuǎn)成大寫的字符。

"中文abc def 12gh".upper()
# "中文ABC DEF 12GH"

需要注意的是 s.upper().isupper() 不一定為 True。

字符串格式輸出 str.center(width[, fillchar])

將字符串按照給定的寬度居中顯示,可以給定特定的字符填充多余的長度,如果指定的長度小于字符串長度,則返回原字符串。

"12345".center(10, "*")
# "**12345***"

"12345".center(10)
# "  12345   "
str.ljust(width[, fillchar]); str.rjust(width[, fillchar])

返回指定長度的字符串,字符串內(nèi)容居左(右)如果長度小于字符串長度,則返回原始字符串,默認(rèn)填充為 ASCII 空格,可指定填充的字符串。

"dobi".ljust(10)
# "dobi      "

"dobi".ljust(10, "~")
# "dobi~~~~~~"

"dobi".ljust(3, "~")
# "dobi"

"dobi".ljust(3)
# "dobi"
str.zfill(width)

用 "0" 填充字符串,并返回指定寬度的字符串。

"42".zfill(5)
# "00042"
"-42".zfill(5)
# "-0042"

"dd".zfill(5)
# "000dd"

"--".zfill(5)
# "-000-"

" ".zfill(5)
# "0000 "

"".zfill(5)
# "00000"

"ffffdffffddd".zfill(5)
# "ffffdffffddd"
str.expandtabs(tabsize=8)

用指定的空格替代橫向制表符,使得相鄰字符串之間的間距保持在指定的空格數(shù)以內(nèi)。

tab = "1	23	456	7890	1112131415	161718192021"

tab.expandtabs()
# "1       23      456     7890    1112131415      161718192021"
# "123456781234567812345678123456781234567812345678"  注意空格的計(jì)數(shù)與上面輸出位置的關(guān)系

tab.expandtabs(4)
# "1   23  456 7890    1112131415  161718192021"
# "12341234123412341234123412341234"  
str.format(^args, ^^kwargs)

格式化字符串的語法比較繁多,官方文檔已經(jīng)有比較詳細(xì)的 examples,這里就不寫例子了,想了解的童鞋可以直接戳這里 Format examples.

str.format_map(mapping)

類似 str.format(*args, **kwargs) ,不同的是 mapping 是一個(gè)字典對象。

People = {"name":"john", "age":56}

"My name is {name},i am {age} old".format_map(People)
# "My name is john,i am 56 old"
字符串搜索定位與替換 str.count(sub[, start[, end]])
text = "outer protective covering"

text.count("e")
# 4

text.count("e", 5, 11)
# 1

text.count("e", 5, 10)
# 0
str.find(sub[, start[, end]]); str.rfind(sub[, start[, end]])
text = "outer protective covering"

text.find("er")
# 3

text.find("to")
# -1

text.find("er", 3)
Out[121]: 3

text.find("er", 4)
Out[122]: 20

text.find("er", 4, 21)
Out[123]: -1

text.find("er", 4, 22)
Out[124]: 20

text.rfind("er")
Out[125]: 20

text.rfind("er", 20)
Out[126]: 20

text.rfind("er", 20, 21)
Out[129]: -1
str.index(sub[, start[, end]]); str.rindex(sub[, start[, end]])

find() rfind() 類似,不同的是如果找不到,就會引發(fā) ValueError

str.replace(old, new[, count])
"dog wow wow jiao".replace("wow", "wang")
# "dog wang wang jiao"

"dog wow wow jiao".replace("wow", "wang", 1)
# "dog wang wow jiao"

"dog wow wow jiao".replace("wow", "wang", 0)
# "dog wow wow jiao"

"dog wow wow jiao".replace("wow", "wang", 2)
# "dog wang wang jiao"

"dog wow wow jiao".replace("wow", "wang", 3)
# "dog wang wang jiao"
str.lstrip([chars]); str.rstrip([chars]); str.strip([chars])
"  dobi".lstrip()
# "dobi"
"db.kun.ac.cn".lstrip("dbk")
# ".kun.ac.cn"

" dobi   ".rstrip()
# " dobi"
"db.kun.ac.cn".rstrip("acn")
# "db.kun.ac."

"   dobi   ".strip()
# "dobi"
"db.kun.ac.cn".strip("db.c")
# "kun.ac.cn"
"db.kun.ac.cn".strip("cbd.un")
# "kun.a"
static str.maketrans(x[, y[, z]]); str.translate(table)

maktrans 是一個(gè)靜態(tài)方法,用于生成一個(gè)對照表,以供 translate 使用。
如果 maktrans 僅一個(gè)參數(shù),則該參數(shù)必須是一個(gè)字典,字典的 key 要么是一個(gè) Unicode 編碼(一個(gè)整數(shù)),要么是一個(gè)長度為 1 的字符串,字典的 value 則可以是任意字符串、None或者 Unicode 編碼。

a = "dobi"
ord("o")
# 111

ord("a")
# 97

hex(ord("狗"))
# "0x72d7"

b = {"d":"dobi", 111:" is ", "b":97, "i":"u72d7u72d7"}
table = str.maketrans(b)

a.translate(table)
# "dobi is a狗狗"

如果 maktrans 有兩個(gè)參數(shù),則兩個(gè)參數(shù)形成映射,且兩個(gè)字符串必須是長度相等;如果有第三個(gè)參數(shù),則第三個(gè)參數(shù)也必須是字符串,該字符串將自動映射到 None

a = "dobi is a dog"

table = str.maketrans("dobi", "alph")

a.translate(table)
# "alph hs a alg"

table = str.maketrans("dobi", "alph", "o")

a.translate(table)
# "aph hs a ag"
字符串的聯(lián)合與分割 str.join(iterable)

用指定的字符串,連接元素為字符串的可迭代對象。

"-".join(["2012", "3", "12"])
# "2012-3-12"

"-".join([2012, 3, 12])
# TypeError: sequence item 0: expected str instance, int found

"-".join(["2012", "3", b"12"])  #bytes 為非字符串
# TypeError: sequence item 2: expected str instance, bytes found

"-".join(["2012"])
# "2012"

"-".join([])
# ""

"-".join([None])
# TypeError: sequence item 0: expected str instance, NoneType found

"-".join([""])
# ""

",".join({"dobi":"dog", "polly":"bird"})
# "dobi,polly"

",".join({"dobi":"dog", "polly":"bird"}.values())
# "dog,bird"
str.partition(sep); str.rpartition(sep)
"dog wow wow jiao".partition("wow")
# ("dog ", "wow", " wow jiao")

"dog wow wow jiao".partition("dog")
# ("", "dog", " wow wow jiao")

"dog wow wow jiao".partition("jiao")
# ("dog wow wow ", "jiao", "")

"dog wow wow jiao".partition("ww")
# ("dog wow wow jiao", "", "")



"dog wow wow jiao".rpartition("wow")
Out[131]: ("dog wow ", "wow", " jiao")

"dog wow wow jiao".rpartition("dog")
Out[132]: ("", "dog", " wow wow jiao")

"dog wow wow jiao".rpartition("jiao")
Out[133]: ("dog wow wow ", "jiao", "")

"dog wow wow jiao".rpartition("ww")
Out[135]: ("", "", "dog wow wow jiao")
str.split(sep=None, maxsplit=-1); str.rsplit(sep=None, maxsplit=-1)
"1,2,3".split(","), "1, 2, 3".rsplit()
# (["1", "2", "3"], ["1,", "2,", "3"])

"1,2,3".split(",", maxsplit=1),  "1,2,3".rsplit(",", maxsplit=1)
# (["1", "2,3"], ["1,2", "3"])

"1 2 3".split(), "1 2 3".rsplit()
# (["1", "2", "3"], ["1", "2", "3"])

"1 2 3".split(maxsplit=1), "1 2 3".rsplit(maxsplit=1)
# (["1", "2 3"], ["1 2", "3"])

"   1   2   3   ".split()
# ["1", "2", "3"]

"1,2,,3,".split(","), "1,2,,3,".rsplit(",")
# (["1", "2", "", "3", ""], ["1", "2", "", "3", ""])

"".split()
# []
"".split("a")
# [""]
"bcd".split("a")
# ["bcd"]
"bcd".split(None)
# ["bcd"]
str.splitlines([keepends])

字符串以行界符為分隔符拆分為列表;當(dāng) keependsTrue,拆分后保留行界符,能被識別的行界符見官方文檔。

"ab c

de fg
kl
".splitlines()
# ["ab c", "", "de fg", "kl"]
"ab c

de fg
kl
".splitlines(keepends=True)
# ["ab c
", "
", "de fg
", "kl
"]

"".splitlines(), "".split("
")      #注意兩者的區(qū)別
# ([], [""])
"One line
".splitlines()
# (["One line"], ["Two lines", ""])
字符串條件判斷 str.endswith(suffix[, start[, end]]); str.startswith(prefix[, start[, end]])
text = "outer protective covering"

text.endswith("ing")
# True

text.endswith(("gin", "ing"))
# True
text.endswith("ter", 2, 5)
# True

text.endswith("ter", 2, 4)
# False
str.isalnum()

字符串和數(shù)字的任意組合,即為真,簡而言之:

只要 c.isalpha(), c.isdecimal(), c.isdigit(), c.isnumeric() 中任意一個(gè)為真,則 c.isalnum() 為真。

"dobi".isalnum()
# True

"dobi123".isalnum()
# True

"123".isalnum()
# True

"徐".isalnum()
# True

"dobi_123".isalnum()
# False

"dobi 123".isalnum()
# False

"%".isalnum()
# False
str.isalpha()

Unicode 字符數(shù)據(jù)庫中作為 “Letter”(這些字符一般具有 “Lm”, “Lt”, “Lu”, “Ll”, or “Lo” 等標(biāo)識,不同于 Alphabetic) 的,均為真。

"dobi".isalpha()
# True

"do bi".isalpha()
# False

"dobi123".isalpha()
# False

"徐".isalpha()
# True
str.isdecimal(); str.isdigit(); str.isnumeric()

三個(gè)方法的區(qū)別在于對 Unicode 通用標(biāo)識的真值判斷范圍不同:

isdecimal: Nd,
isdigit: No, Nd,
isnumeric: No, Nd, Nl

digitdecimal 的區(qū)別在于有些數(shù)值字符串,是 digit 卻非 decimal ,具體戳 這里

num = "u2155"
print(num)
# ?
num.isdecimal(), num.isdigit(), num.isnumeric()
# (False, False, True)

num = "u00B2"
print(num)
# 2
num.isdecimal(), num.isdigit(), num.isnumeric()
# (False, True, True)

num = "1"  #unicode
num.isdecimal(), num.isdigit(), num.isnumeric()
# (Ture, True, True)

num = ""Ⅶ"" 
num.isdecimal(), num.isdigit(), num.isnumeric()
# (False, False, True)

num = "十"
num.isdecimal(), num.isdigit(), num.isnumeric()
# (False, False, True)

num = b"1" # byte
num.isdigit()   # True
num.isdecimal() # AttributeError "bytes" object has no attribute "isdecimal"
num.isnumeric() # AttributeError "bytes" object has no attribute "isnumeric"
str.isidentifier()

判斷字符串是否可為合法的標(biāo)識符。

"def".isidentifier()
# True

"with".isidentifier()
# True

"false".isidentifier()
# True

"dobi_123".isidentifier()
# True

"dobi 123".isidentifier()
# False

"123".isidentifier()
# False
str.islower()
"徐".islower()
# False

"?".islower()   #德語大寫字母
# False

"a徐".islower()
# True

"ss".islower()
# True

"23".islower()
# False

"Ab".islower()
# False
str.isprintable()

判斷字符串的所有字符都是可打印字符或字符串為空。Unicode 字符集中 “Other” “Separator” 類別的字符為不可打印的字符(但不包括 ASCII 的空格(0x20))。

"dobi123".isprintable()
# True

"dobi123
".isprintable()
Out[24]: False

"dobi 123".isprintable()
# True

"dobi.123".isprintable()
# True

"".isprintable()
# True
str.isspace()

判斷字符串中是否至少有一個(gè)字符,并且所有字符都是空白字符。

In [29]: "
	".isspace()
Out[29]: True

In [30]: "".isspace()
Out[30]: False

In [31]: " ".isspace()
Out[31]: True
str.istitle()

判斷字符串中的字符是否是首字母大寫,其會忽視非字母字符。

"How Python Works".istitle()
# True

"How Python WORKS".istitle()
# False

"how python works".istitle()
# False

"How Python  Works".istitle()
# True

" ".istitle()
# False

"".istitle()
# False

"A".istitle()
# True

"a".istitle()
# False

"甩甩Abc Def 123".istitle()
# True
str.isupper()
"徐".isupper()
# False

"DOBI".isupper()
Out[41]: True

"Dobi".isupper()
# False

"DOBI123".isupper()
# True

"DOBI 123".isupper()
# True

"DOBI	 123".isupper()
# True

"DOBI_123".isupper()
# True

"_123".isupper()
# False
字符串編碼 str.encode(encoding="utf-8", errors="strict")
fname = "徐"

fname.encode("ascii")
# UnicodeEncodeError: "ascii" codec can"t encode character "u5f90"...

fname.encode("ascii", "replace")
# b"?"

fname.encode("ascii", "ignore")
# b""

fname.encode("ascii", "xmlcharrefreplace")
# b"徐"

fname.encode("ascii", "backslashreplace")
# b"u5f90"
參考資料

Python 內(nèi)置類型字符串方法

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/37812.html

相關(guān)文章

  • Python 自定義函數(shù)特殊屬性(收藏專用

    Python 中通過函數(shù)定義所創(chuàng)建的用戶自定義函數(shù)對象均具有一些特殊屬性,需要注意的是這里介紹的是自定義函數(shù)(function類型)的特殊屬性,而非方法(method 類型)的特殊屬性,函數(shù)和方法的特熟屬性以及默認(rèn)的返回值可能不盡相同。 對于大多數(shù)特殊屬性,可以通過下面這個(gè)例子示范一下: class Test(): def func(self, v = dog): 這里演...

    zhou_you 評論0 收藏0
  • Python3,68個(gè)內(nèi)置庫函數(shù)詳解,進(jìn)階必備,必須收藏??!!

    摘要:判斷奇數(shù)是迭代器會根據(jù)提供的函數(shù)對指定序列做映射語法可以對可迭代對象中的每一個(gè)元素進(jìn)行映射。 python內(nèi)置庫詳解 1、引言2、內(nèi)置庫詳解2.1 數(shù)據(jù)相關(guān)2.1...

    lindroid 評論0 收藏0
  • ????新生代農(nóng)民工爆肝8萬字,整理Python編程從入門到實(shí)踐(建議收藏)已碼:6萬字????

    人生苦短,我用Python 開發(fā)環(huán)境搭建安裝 Python驗(yàn)證是否安裝成功安裝Pycharm配置pycharm 編碼規(guī)范基本語法規(guī)則保留字單行注釋多行注釋行與縮進(jìn)多行語句數(shù)據(jù)類型空行等待用戶輸入print輸出 運(yùn)算符算術(shù)運(yùn)算符邏輯運(yùn)算符成員運(yùn)算符身份運(yùn)算符運(yùn)算符優(yōu)先級 字符串訪問字符串中的值字符串更新合并連接字符串刪除空白startswith()方法endswith()方法字符串格式化...

    wthee 評論0 收藏0
  • NumPy與Python內(nèi)置列表計(jì)算標(biāo)準(zhǔn)差區(qū)別詳析

      小編寫這篇文章的主要目的,主要是給大家進(jìn)行介紹,關(guān)于NumPy與Python內(nèi)置列表計(jì)算標(biāo)準(zhǔn)差區(qū)別的相關(guān)介紹,希望可以給各位讀者帶來幫助?! ?什么是Numpy  NumPy,是NumericalPython的通稱,用以性能卓越計(jì)算機(jī)的應(yīng)用和數(shù)據(jù)統(tǒng)計(jì)分析的前提包,像數(shù)理科學(xué)專用工具(pandas)和架構(gòu)(Scikit-learn)中都采用上了NumPy這個(gè)包?! umPy中的基本數(shù)據(jù)結(jié)構(gòu)是n...

    89542767 評論0 收藏0
  • 計(jì)算機(jī)常識 - 收藏集 - 掘金

    摘要:使用簡記后端掘金全稱為即消息隊(duì)列。優(yōu)測優(yōu)社區(qū)干貨精選老司機(jī)亂談編輯器之神掘金前言是一種信仰,我自從年有了這個(gè)信仰,已經(jīng)個(gè)年頭了。 PHP 程序員進(jìn)階學(xué)習(xí)書籍參考指南 - 后端 - 掘金PHP程序員進(jìn)階學(xué)習(xí)書籍參考指南 @heiyeluren lastmodify: 2016/2/18 ... 當(dāng)我們在談?wù)撉岸思用軙r(shí),我們在談些什么 - 前端 - 掘金潘建旭,豈安科技(www.bigse...

    Yi_Zhi_Yu 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<