1. 程式人生 > >python中的字串(str)操作

python中的字串(str)操作

字串是python中資料型別。一般就單引號(‘’)或雙引號(“”)引起來的內容就是字串。

例如:下面兩個都是定義字串

str1 = "hello world"
str2 = 'Hello World' 

1、索引:就是下標,從0開始。預設是從左往右數;當索引為負數時,表示從右往左數。通過索引得到的內容還是一個字串。

如上面例子str1中字元 'h' 的索引為0。即str1[0] 的值是'h' 

字串是不可變的物件,所以任何操作對字串是沒有影響的。如下面的例子,通過切片對字串str1進行操作之後,str1的值沒有發生改變

2、切片:可以對字串進行擷取 

語法:

 

s[起始位置:結束位置]  ==》結束位置取不到

s[起始位置:]  ==》表示從起始位置截到末尾

s[起始位置:結束位置:步長]

起始位置省略時,表示從0開始;結束位置省略時,表示到末尾;如果步長為負數,則反向來數【預設從左往右截】 

 

 

>>> str1 = "Hello World"
>>> str1[1:6]
'ello '
>>> str1[6:]
'World'
>>> str1[1:6:2]
'el '
>>> str1  #str1的值沒有發生改變,仍然還是"Hello World" 所以說字串是不可變的物件,任何操作對字串是沒有影響的。
'Hello World'

3、常用操作

1capitalize() 使字串的首字母大寫

 

>>> str2 = "hello world"
>>> str2.capitalize()
'Hello world'

2upper()lower() 使字串中的字母大寫(小寫)

 

>>> str2 = "HelloWorld"
>>> str2.upper()
'HELLOWORLD'
>>> str2.lower()
'helloworld'

3)swapcase()  大小寫轉換,即把大寫的變成小寫,把小寫的變成大寫

>>> str3 = "Hello World"
>>> str3.swapcase()
'hELLO wORLD'

4)casefold() 轉換成小寫【不常用】,和lower()的功能一樣。lower()對一些字元支援不夠友好,但是casefold()對所有字元都支援,包括東歐的一些字母

 

>>> str4 = "геёжз"#俄文字元
>>> str4.casefold()
'геёжз'

5)title 把每一個特殊字元隔開的首字母大寫(中文被認為特殊字元)

 

>>> str5 = "hello_world_你好_tanxu"
>>> str5.title()
'Hello_World_你好_Tanxu'

6)center(字串長度) 使得一個字串在規定的長度內居中

 

>>> str6 = "hello"
>>> str6.center(20)
'       hello        '

7)strip():引數為空時預設去兩端的空格【一般用於登入時輸入使用者名稱和密碼】;引數不為空時,去掉左右兩端的內容

 

>>> str7 = "    hello    "
>>> str7.strip()
'hello'
>>> str8 = "aaaaaa哈哈哈哈aaaaaa"
>>> str8.strip("a")
'哈哈哈哈'

 

 例子:

username = input("請輸入使用者名稱:").strip()  #有些不友好的使用者會在使用者名稱和密碼兩端輸入多餘的空格
password = input("請輸入密碼:").strip()
if username == "Tanxu"  and password == "123456":
      print("登入成功!")
else:
      print("登入失敗!")

 執行結果:

請輸入使用者名稱:       Tanxu
請輸入密碼:             123456
登入成功!

  I、lstrip()沒有引數時,預設去掉字串左邊的空格;有引數時,去掉左邊的內容

  II、rstrip()沒有引數時,預設去掉字串右邊的空格;有引數時,去掉右邊的內容

>>> str8.lstrip("a")
'哈哈哈哈aaaaaa'
>>> str8.rstrip("a")
'aaaaaa哈哈哈哈'

8)replace(原字串,目標字串,替換個數)  字串替換

 

 

 

>>> str9 = "Tanxu_is_a_good_girl"
>>> str9.replace("_"," ")#把所有下劃線(_)換成空格,第三個引數省略,預設全部替換
'Tanxu is a good girl'

>>> str10 = "Tanxu is a good girl"
>>> str10.replace("a","e",2)#把字元a換成字元e  換兩個
'Tenxu is e good girl'

9split(切割的內容) 按照括號內的引數切割,如果是字串切割後放在一個列表中

 

>>> str11 = "Tan_xu_is_a_good_girl"
>>> str11.split("_")
['Tan', 'xu', 'is', 'a', 'good', 'girl']#切割後存在列表中

 

  如果切割的內容在字元的兩端會產生空格

>>> str11.split("Tan")
['', '_xu_is_a_good_girl']#左邊會產生一個空格
>>> str11.split("girl")
['Tan_xu_is_a_good_', '']#右邊會產生一個空格

  

4、字串中常用的查詢操作:

ret = "字串是 Python 中最常用的資料型別。我們可以使用引號來建立字串"
print(ret.startswith("字串"))#判斷字串是否以“字串”開頭,如果是,返回True,否則,返回False
print(ret.endswith("字串"))#判斷字串是否以“字串”結束,如果是,返回True,否則,返回False
print(ret.count("的"))#計算字串中“的”的出現次數
print(ret.find("Python"))#判斷字串中是否有“Python”字串,如果有返回出現的位置
print(ret.find("Python1"))#如果沒有,返回-1
print(ret.find("Python",1,10))#索引查詢
print(ret.index("Python"))#返回字串“Python”的索引,如果沒有該字串,程式會報錯

  執行結果:

True
True
1
5
-1
-1
5

  

5、計算字串的長度:len(字串)

>>> str12 = "Tanxu"
>>> len(str12)
5

 

6、條件判斷

str13 = "123.456"
str14 = "Tanxu"
str15 = "_Tan_xu_"
#是否由字母和數字組成,如果字串至少有一個字元並且所有字元都是字母或數字返回True,否則返回False
print(str13.isalnum())
print(str14.isalnum())
print(str15.isalnum())

#是否由字母組成,如果字串中至少有一個字元並且所有字元都是字母則返回True,否則返回False
print(str13.isalpha())
print(str14.isalpha())
print(str15.isalpha())

#是否由數字組成,不包括小數點;如果字串中只包含數字,則返回True,否則,返回False
print(str13.isdigit())
print(str14.isdigit())
print(str15.isdigit())

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

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