(Python基礎教程之七)Python字串操作

farsun發表於2021-09-09

在,string文字是:

  • 代表Unicode字元的位元組陣列
  • 用單引號或雙引號引起來
  • 無限長度

字串文字

str = 'hello world'

str = "hello world"

一個多行字串使用三個單引號或三個雙引號建立的。

多行字串文字

str = '''Say hello

to python

programming'''

str = """Say hello

to python

programming"""

Python沒有字元資料型別,單個字元就是長度為1的字串。

2. Substring or slicing

透過使用slice語法,我們可以獲得一系列字元。索引從零開始。

str[m:n] 從位置2(包括)到5(不包括)返回字串。

從索引2到5的子字串

str = 'hello world'

print(str[2:5]) # llo

負切片將從末尾返回子字串。

子串從索引-5到-2

str = 'hello world'

print(str[-5:-2])   # wor

str[-m:-n] 將字串從位置-5(不包括)返回到-2(包括)。

3. Strings as arrays

在python中,字串表現為陣列。方括號可用於訪問字串的元素。

字元在第n個位置

str = 'hello world'

print(str[0])   # h

print(str[1])   # e

print(str[2])   # l

print(str[20])  # IndexError: string index out of range

4. String length

len()函式返回字串的長度:

字串長度

str = 'hello world'

print(len(str)) # 11

5. String Formatting

要在python中格式化s字串,請{ }在所需位置在字串中使用佔位符。將引數傳遞給format()函式以使用值格式化字串。

我們可以在佔位符中傳遞引數位置(從零開始)。

字串格式()

age = 36

name = 'Lokesh'

txt = "My name is {} and my age is {}"

print(txt.format(name, age))    # My name is Lokesh and my age is 36

txt = "My age is {1} and the name is {0}"

print(txt.format(name, age))    # My age is 36 and the name is Lokesh

6. String Methods

6.1. capitalize()

它返回一個字串,其中給定字串的第一個字元被轉換為大寫。當第一個字元為非字母時,它將返回相同的字串。

字串大寫()

name = 'lokesh gupta'

print( name.capitalize() )  # Lokesh gupta

txt = '38 yrs old lokesh gupta'

print( txt.capitalize() )   # 38 yrs old lokesh gupta

6.2. casefold()

它返回一個字串,其中所有字元均為給定字串的小寫字母。

字串casefold()

txt = 'My Name is Lokesh Gupta'

print( txt.casefold() ) # my name is lokesh gupta

6.3. center()

使用指定的字元(預設為空格)作為填充字元,使字串居中對齊。

在給定的示例中,輸出總共需要20個字元,而“ hello world”位於其中。

字串中心

txt = "hello world"

x = txt.center(20)

print(x)    # '    hello world     '

6.4. count()

它返回指定值出現在字串中的次數。它有兩種形式:

 count(value) - value to search for in the string.  
 count(value, start, end) - value to search for in the string, where search starts from start position till end position.

字串數()

txt = "hello world"

print( txt.count("o") )         # 2

print( txt.count("o", 4, 7) )   # 1

6.5. encode()

它使用指定的編碼對字串進行編碼。如果未指定編碼,UTF-8將使用。

字串encode()

txt = "My name is åmber"

x = txt.encode()

print(x)    # b'My name is xc3xa5mber'

6.6.

True如果字串以指定值結尾,則返回,否則返回False。

字串endswith()

txt = "hello world"

print( txt.endswith("world") )      # True

print( txt.endswith("planet") )     # False

6.7. expandtabs()

它將製表符大小設定為指定的空格數。

字串expandtabs()

txt = "hellotworld"

print( txt.expandtabs(2) )      # 'hello world'

print( txt.expandtabs(4) )      # 'hello   world'

print( txt.expandtabs(16) )     # 'hello           world'

6.8. find()

它查詢指定值的第一次出現。-1如果字串中沒有指定的值,它將返回。

find()與index()方法相同,唯一的區別是,index()如果找不到該值,該方法將引發異常。

字串find()

txt = "My name is Lokesh Gupta"

x = txt.find("e")

print(x)        # 6

6.9. format()

它格式化指定的字串,並在字串的佔位符內插入引數值。

字串格式()

age = 36

name = 'Lokesh'

txt = "My name is {} and my age is {}"

print( txt.format(name, age) )  # My name is Lokesh and my age is 36

6.10. format_map()

它用於返回字典鍵的值,以格式化帶有命名佔位符的字串。

字串format_map()

params = {'name':'Lokesh Gupta', 'age':'38'}

txt = "My name is {name} and age is {age}"

x = txt.format_map(params)

print(x)        # My name is Lokesh Gupta and age is 38

6.11. index()

  • 它在給定的字串中查詢指定值的第一次出現。
  • 如果找不到要搜尋的值,則會引發異常。

字串index()

txt = "My name is Lokesh Gupta"

x = txt.index("e")

print(x)        # 6

x = txt.index("z")  # ValueError: substring not found

6.12. isalnum()

它檢查字母數字字串。True如果所有字元都是字母數字,即字母(a-zA-Z)和數字,它將返回(0-9)。

字串isalnum()

print("LokeshGupta".isalnum())      # True

print("Lokesh Gupta".isalnum())     # False - Contains space

6.13. isalpha()

True如果所有字元都是字母,則返回它,即字母(a-zA-Z)。

字串isalpha()

print("LokeshGupta".isalpha())          # True

print("Lokesh Gupta".isalpha())         # False - Contains space

print("LokeshGupta38".isalpha())        # False - Contains numbers

6.14. isdecimal()

如果所有字元均為小數(0-9),則返回程式碼。否則返回False。

字串isdecimal()

print("LokeshGupta".isdecimal())    # False

print("12345".isdecimal())          # True

print("123.45".isdecimal())         # False - Contains 'point'

print("1234 5678".isdecimal())      # False - Contains space

6.15. isdigit()

True如果所有字元都是數字,則返回,否則返回False。指數也被認為是數字。

字串isdigit()

print("LokeshGupta".isdigit())      # False

print("12345".isdigit())            # True

print("123.45".isdigit())           # False - contains decimal point

print("1234u00B2".isdigit())       # True - unicode for square 2

6.16. isidentifier()

True如果字串是有效的識別符號,則返回,否則返回False。

有效的識別符號僅包含字母數字字母(a-z)和(0-9)或下劃線( _ )。它不能以數字開頭或包含任何空格。

字串isidentifier()

print( "Lokesh_Gupta_38".isidentifier() )       # True

print( "38_Lokesh_Gupta".isidentifier() )       # False - Start with number

print( "_Lokesh_Gupta".isidentifier() )         # True

print( "Lokesh Gupta 38".isidentifier() )       # False - Contain spaces

6.17. islower()

True如果所有字元均小寫,則返回,否則返回False。不檢查數字,符號和空格,僅檢查字母字元。

字串islower()

print( "LokeshGupta".islower() )        # False

print( "lokeshgupta".islower() )        # True

print( "lokesh_gupta".islower() )       # True

print( "lokesh_gupta_38".islower() )    # True

6.18. isnumeric()

True如果所有字元都是數字(0-9),則it方法返回,否則返回False。指數也被認為是數值。

字串isnumeric()

print("LokeshGupta".isnumeric())    # False

print("12345".isnumeric())          # True

print("123.45".isnumeric())         # False - contains decimal point

print("1234u00B2".isnumeric())     # True - unicode for square 2

6.19. isprintable()

它返回True,如果所有字元都列印,否則返回False。不可列印字元用於指示某些格式化操作,例如:

  • 空白(被視為不可見的圖形)
  • 回車
  • 標籤
  • 換行
  • 分頁符
  • 空字元

字串isprintable()

print("LokeshGupta".isprintable())      # True

print("Lokesh Gupta".isprintable())     # True

print("LokeshtGupta".isprintable())    # False

6.20. isspace()

True如果字串中的所有字元都是空格,則返回,否則返回False。

6.21. istitle()

它返回True如果文字的所有單詞以大寫字母開頭,字的其餘均為小寫字母,即標題案例。否則False。

字串istitle()

print("Lokesh Gupta".istitle())     # True

print("Lokesh gupta".istitle())     # False

6.22. isupper()

True如果所有字元均大寫,則返回,否則返回False。不檢查數字,符號和空格,僅檢查字母字元。

字串isupper()

print("LOKESHGUPTA".isupper())      # True

print("LOKESH GUPTA".isupper())     # True

print("Lokesh Gupta".isupper())     # False

6.23. join()

它以可迭代方式獲取所有專案,並使用強制性指定的分隔符將它們連線為一個字串。

字串join()

myTuple = ("Lokesh", "Gupta", "38")

x = "#".join(myTuple)

print(x)    # Lokesh#Gupta#38

6.24. ljust()

此方法將使用指定的字元(預設為空格)作為填充字元使字串左對齊。

字串ljust()

txt = "lokesh"

x = txt.ljust(20, "-")

print(x)    # lokesh--------------

6.25. lower()

它返回一個字串,其中所有字元均為小寫。符號和數字將被忽略。

字串lower()

txt = "Lokesh Gupta"

x = txt.lower()

print(x)    # lokesh gupta

6.26. lstrip()

它刪除所有前導字元(預設為空格)。

字串lstrip()

txt = "#Lokesh Gupta"

x = txt.lstrip("#_,.")

print(x)    # Lokesh Gupta

6.27. maketrans()

它建立一個字元到其轉換/替換的一對一對映。當在translate()方法中使用時,此翻譯對映隨後用於將字元替換為其對映的字元。

字串maketrans()

dict = {"a": "123", "b": "456", "c": "789"}

string = "abc"

print(string.maketrans(dict))   # {97: '123', 98: '456', 99: '789'}

6.28. partition()

它在給定的文字中搜尋指定的字串,並將該字串拆分為包含三個元素的元組:

  • 第一個元素包含指定字串之前的部分。
  • 第二個元素包含指定的字串。
  • 第三個元素包含字串後面的部分。

字串partition()

txt = "my name is lokesh gupta"

x = txt.partition("lokesh")

print(x)    # ('my name is ', 'lokesh', ' gupta')

print(x[0]) # my name is

print(x[1]) # lokesh

print(x[2]) #  gupta

6.29. replace()

它將指定的短語替換為另一個指定的短語。它有兩種形式:

  • string.replace(oldvalue, newvalue)
  • string.replace(oldvalue, newvalue, count)–“計數”指定要替換的出現次數。預設為所有事件。

字串replace()

txt = "A A A A A"

x = txt.replace("A", "B")

print(x)    # B B B B B

x = txt.replace("A", "B", 2)

print(x)    # B B A A A

6.30. rfind()

它查詢指定值的最後一次出現。-1如果在給定的文字中找不到該值,則返回該值。

字串rfind()

txt = "my name is lokesh gupta"

x = txt.rfind("lokesh")    

print(x)        # 11

x = txt.rfind("amit")      

print(x)        # -1

6.31. rindex()

它查詢指定值的最後一次出現,如果找不到該值,則引發異常。

字串rindex()

txt = "my name is lokesh gupta"

x = txt.rindex("lokesh")       

print(x)                # 11

x = txt.rindex("amit")  # ValueError: substring not found

6.32. rjust()

它將使用指定的字元(預設為空格)作為填充字元來右對齊字串。

字串rjust()

txt = "lokesh"

x = txt.rjust(20,"#")

print(x, "is my name")  # ##############lokesh is my name

6.33. rpartition()

它搜尋指定字串的最後一次出現,並將該字串拆分為包含三個元素的元組。

  • 第一個元素包含指定字串之前的部分。
  • 第二個元素包含指定的字串。
  • 第三個元素包含字串後面的部分。

字串rpartition()

txt = "my name is lokesh gupta"

x = txt.rpartition("lokesh")

print(x)    # ('my name is ', 'lokesh', ' gupta')

print(x[0]) # my name is

print(x[1]) # lokesh

print(x[2]) #  gupta

6.34. rsplit()

它將字串從右開始拆分為一個列表。

字串rsplit()

txt = "apple, banana, cherry"

x = txt.rsplit(", ")

print(x)    # ['apple', 'banana', 'cherry']

6.35. rstrip()

它刪除所有結尾字元(字串末尾的字元),空格是預設的結尾字元。

字串rstrip()

txt = "     lokesh     "

x = txt.rstrip()

print(x)    # '     lokesh'

6.36.

它將字串拆分為列表。您可以指定分隔符。預設分隔符為空格。

字串split()

txt = "my name is lokesh"

x = txt.split()

print(x)    # ['my', 'name', 'is', 'lokesh']

6.37. splitlines()

透過在換行符處進行拆分,它將字串拆分為列表。

字串splitlines()

txt = "my namenis lokesh"

x = txt.splitlines()

print(x)    # ['my name', 'is lokesh']

6.38.

True如果字串以指定值開頭,則返回,否則返回False。字串比較區分大小寫。

字串startswith()

txt = "my name is lokesh"

print( txt.startswith("my") )   # True

print( txt.startswith("My") )   # False

6.39. strip()

它將刪除所有前導(開頭的空格)和結尾(結尾的空格)字元(預設為空格)。

字串strip()

txt = "   my name is lokesh   "

print( txt.strip() )    # 'my name is lokesh'

6.40. swapcase()

它返回一個字串,其中所有大寫字母均為小寫字母,反之亦然。

字串swapcase()

txt = "My Name Is Lokesh Gupta"

print( txt.swapcase() ) # mY nAME iS lOKESH gUPTA

6.41. title()

它返回一個字串,其中每個單詞的第一個字元均為大寫。如果單詞開頭包含數字或符號,則其後的第一個字母將轉換為大寫字母。

字串標題()

print( "lokesh gupta".title() ) # Lokesh Gupta

print( "38lokesh gupta".title() )   # 38Lokesh Gupta

print( "1. lokesh gupta".title() )  # Lokesh Gupta

6.42. translate()

它需要轉換表來根據對映表替換/翻譯給定字串中的字元。

字串translate()

translation = {97: None, 98: None, 99: 105}

string = "abcdef"  

print( string.translate(translation) )  # idef

6.43. upper()

它返回一個字串,其中所有字元均為大寫。符號和數字將被忽略。

字串upper()

txt = "lokesh gupta"

print( txt.upper() )    # LOKESH GUPTA

6.44. zfill()

它在字串的開頭新增零(0),直到達到指定的長度。

字串zfill()

txt = "100"

x = txt.zfill(10)

print( 0000000100 ) # 0000000100

學習愉快!

作者:
出處:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4289/viewspace-2825373/,如需轉載,請註明出處,否則將追究法律責任。

相關文章