1 字符串介紹
Ø 字符串用單引號或雙引號引起來。
Ø 一個字節(jié)可以讓小于256數(shù)字占用,一個字符占用一個字節(jié);如數(shù)字100占用一個字節(jié),字符100占用三個字節(jié)
Ø 字符串聲明后就會分配下標,從0開始;負數(shù)表示倒數(shù)第幾個;
Ø len()取字符串長度
Ø 字符串之間可以相加
In [7]: name="abcdefghijk"
In [8]: name[0]
Out[8]: 'a'
In [9]: name[9]
Out[9]: 'j'
In [11]: name[len(name)-1]
Out[11]: 'k'
In [12]: name[-1] #取倒數(shù)第一個
Out[12]: 'k'
In [13]: name[-2] #取倒數(shù)第二個
Out[13]: 'j
[字符串相加,相當于連接]
In [1]: a="100"
In [2]: b="200"
In [3]: a+b
Out[3]: '100200'
In [4]: "a+b=%s"%(a+b)
Out[4]: 'a+b=100200'
1. 切片
切片是指對操作的對象截取其中一部分的操作。字符串,列表,元組都支持切換
切片的語法:[起始:結束:步長] # “包頭不包尾”
步長:表示下標變化的規(guī)律
In [5]: name="abcdefghijk"
In [6]: name[0:2] # 截取ab,“包頭不包尾”
Out[6]: 'ab'
In [7]: name[0:-1] #截取第1個至倒數(shù)第一個之間的字符
Out[7]: 'abcdefghij'
In [8]: name[:-1] #起始位不寫,默認從0開始
Out[8]: 'abcdefghij'
In [9]: name[2:] #結束位不寫,默認到最后一位
Out[9]: 'cdefghijk'
In [10]: name[0::2] #步長=2,隔一個字符取一位 ,默認為1
Out[10]: 'acegik'
【例2】‘倒著輸出字符
In [22]: i=len(name)
In [23]: while i>0:
...: i-=1
...: print(name[i],end='')
...:
kjihgfedcba
In [17]: name[-1::-1]
Out[17]: 'kjihgfedcba'
2. 字符串常見函數(shù)調用操作
常用函數(shù)
1) 查找字符串位置Find和index
In [24]: my_st="hello world bjsxt laoxiao is bjsxt.com"
In [26]: my_st.find("laoxiao")
Out[26]: 18 # 輸出字符串第一次出現(xiàn)的位置
In [27]: my_st.find("laowang")
Out[27]: -1 #沒查找到,輸出-1
In [28]: my_st.find("bjsxt")
Out[28]: 12
In [29]: my_st.rfind("bjsxt")
Out[29]: 29 #從右邊開始查找時用rfind
In [30]: my_st.index("bjsxt") #index與find類似
Out[30]: 12
In [32]: my_st.rindex("bjsxt")
Out[32]: 29
In [31]: my_st.index("laowang") #沒查找到時報錯
-----------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-31-7dc70d120379> in <module>
----> 1 my_st.index("laowang")
ValueError: substring not found
2) Count字符出現(xiàn)次數(shù)
In [33]: my_st.count("bjsxt")
Out[33]: 2
3) Relpace字符串的替換
In [34]: my_st.replace("laoxiao","laowang")
Out[34]: 'hello world bjsxt laowang is bjsxt.com'
In [35]: my_st.replace("bjsxt","laowang",1) #數(shù)字1表示替換幾次
Out[35]: 'hello world laowang laoxiao is bjsxt.com'
4) Split按照某個字符進行分割,分割后得到一個列表?梢灾付ǚ指疃嗌俣
mystr([sep])分隔符可以指定,也可以不指定。不指定分隔符,將以所有轉義字符或空格分隔。
In [36]: my_st
Out[36]: 'hello world bjsxt laoxiao is bjsxt.com'
In [37]: my_st.split(" ")
Out[37]: ['hello', 'world', 'bjsxt', 'laoxiao', 'is', 'bjsxt.com']
In [39]: my_st.split("laoxiao")
Out[39]: ['hello world bjsxt ', ' is bjsxt.com']#結果無分隔符
In [40]: my_st.split(" ",2) #指標分割多少次
Out[40]: ['hello', 'world', 'bjsxt laoxiao is bjsxt.com']
In [81]: name='asdj fl asd
kjfp oiwe
uri'
In [84]: name.split() #指定分隔符,將以所有轉義字符或空格分隔。
Out[84]: ['asdj', 'fl', 'asd', 'kjfp', 'oiwe', 'uri']
5) Splitlines按照換行符分隔,返回一個包含各行作為元素的列表,相當于split("
")
6) re.split()利用re模塊的split函數(shù)對字符串進行分割,分割后返回的是分割部分的字符列表,可以實現(xiàn)一次性分割多種分割符。
>>> import re
>>> str
'abc,123 efg,567'
>>> re.split('[, ]',str)
['abc', '123', 'efg', '567']
7) Partition,按照某個字符進行分割,分割后得到一個列表。不可以指定分割多少段
In [41]: my_st.partition("laoxiao")
Out[41]: ('hello world bjsxt ', 'laoxiao', ' is bjsxt.com')#分隔后保留分隔符
In [42]: my_st.partition(" ")
Out[42]: ('hello', ' ', 'world bjsxt laoxiao is bjsxt.com')
8) Rpartition,類似于partition函數(shù),不過是從右邊開始
9) Capitalize把字符串第一個字符大寫;Title把字符串的每個單詞首字母大寫
In [46]: my_st.capitalize()
Out[46]: 'Hello world bjsxt laoxiao is bjsxt.com'
In [45]: my_st.title()
Out[45]: 'Hello World Bjsxt Laoxiao Is Bjsxt.Com'
10) Startswith檢查字符串是否以obj開頭,是則返回True,否則False
11) endswith檢查字符串是否以obj結束,是則返回True,否則False
In [47]: file_name="xxxx.txt"
In [49]: if file_name.endswith(".txt"):
...: print("文本")
...:
文本
12) Lower轉換所有大寫字符為小寫
13) Upper轉換反有小寫字符為大寫
In [51]: user_str="aBc"
In [52]: user_str.upper()
Out[52]: 'ABC'
14) Ljust mystr.ljust(width)返回字符串左對齊,并使用空格填充至長度width的新字符串
15) Rjust mystr.rjust(width)返回字符串右對齊,并使用空格填充至長度width的新字符串
16) Center mystr.center(width)返回字符串居中,并使用空格填充至長度width的新字符串
In [57]: name.ljust(50)
Out[57]: 'abcdefghijk '
In [58]: name.rjust(50)
Out[58]: ' abcdefghijk'
In [59]: name.center(50)
Out[59]: ' abcdefghijk '
17) Lstrip刪除字符串左邊空白字符
18) Rstrip 刪除字符串右邊空白字符
19) Strip刪除左右兩端空白字符
In [60]: test_str=" abc "
In [61]: test_str.strip()
Out[61]: 'abc'
In [62]: test_str.lstrip()
Out[62]: 'abc '
In [63]: test_str.rstrip()
Out[63]: ' abc'
20) Isalpha 如果mystr所有字符都是字母,則返回True,否則Falsemystr.isalpha()
21) Isdigit 如果mystr只包含數(shù)字,則返回True,否則Falsemystr. Isdigit ()
22) Isalnum 如果所有字符都是字母或數(shù)字,則返回True,否則False
23) Isspace如果所有字符都是空格,則返回True,否則False
24) Join mystr中每個字符后面插入list的每個元素后面,構造一個新的字符串。列表轉字符串
mystr.join(list)
In [73]: my_names=["100","200","300"]
In [74]: my_names
Out[74]: ['100', '200', '300']
In [75]: "".join(my_names)
Out[75]: '100200300'
In [76]: "-".join(my_names) #用指標字符串連接
Out[76]: '100-200-300'