Python中常用的8種字符串操作方法

拼接字符串
使用“+”可以對多個(gè)字符串進(jìn)行拼接
語法格式: str1 + str2
>>> str1 = "aaa" >>> str2 = "bbb" >>> print(str1 + str2) aaabbb
需要注意的是字符串不允許直接與其他類型進(jìn)行拼接,例如
>>> num = 100 >>> str1 = "hello" >>> print(str1 + num) Traceback (most recent call last): File "<pyshell#5>", line 1, in <module> print(str1 + num) TypeError: can only concatenate str (not "int") to str
上面這種情況我們可以將num轉(zhuǎn)換為字符串再進(jìn)行拼接
>>> num = 100 >>> str1 = "hello" >>> print(str1 + str(num)) hello100
這樣就不會(huì)報(bào)錯(cuò)了
計(jì)算字符串的長度
在Python中使用len()函數(shù)來計(jì)算字符串的長度
語法格式: len(string)
>>> str1 = "hello" >>> len(str1) 5 >>> str2 = "你好" >>> len(str2) 2 >>> str3 = "1111" >>> len(str3) 4
從上面的結(jié)果我們可以看出,在默認(rèn)情況下,len函數(shù)在計(jì)算字符串的長度時(shí),無論是數(shù)字,字母還是多字節(jié)的漢字都認(rèn)為是一個(gè)字符。
為什么說是默認(rèn)情況下呢,因?yàn)樵趯?shí)際開發(fā)中,可能因?yàn)槲覀儾扇〉木幋a不同,字符串實(shí)際所占的字節(jié)數(shù)也不同。
- UTF-8編碼,漢字占3個(gè)字節(jié)
- GBK或者GB2312,漢字占2個(gè)字節(jié)
這時(shí)我們可以通過使用encode()方法進(jìn)行編碼后再進(jìn)行獲取長度。
例如:
>>> str1 = "你好"
>>> len(str1)
2
>>> len(str1.encode('gbk'))
4
>>> len(str1.encode('utf-8'))
6
截取字符串
語法格式: string[start : end : step]
參數(shù)說明
- string:表示要截取的字符串
- start:表示要截取的第一個(gè)字符的索引(包括該字符),如果不指定,則默認(rèn)為0
- end:表示要截取的最后一個(gè)字符的索引(不包括該字符),如果不指定則默認(rèn)為字符串的長度。
- step:表示切片的步長,如果省略,則默認(rèn)為1,當(dāng)省略該步長時(shí),最后一個(gè)冒號也可以省略。
>>> str1 = "hello world!" >>> str1[1] #截取第2個(gè)字符 'e' >>> str1[2:] #從第3個(gè)字符開始截取 'llo world!' >>> str1[:4] 'hell' >>> str1[1:5] 'ello' >>> str1[-1] #截取最后一個(gè)字符 '!' >>> str1[2:-2] 'llo worl'
注意:字符串的索引是從0開始的
分割字符串
python中分割字符串是使用split()方法把字符串分割成列表
語法格式 : str.split(sep, maxsplit)
參數(shù)說明:
- str:表示要進(jìn)行分割的字符串
- sep:用于指定分隔符,可以包含多個(gè)字符,默認(rèn)為None,即所有空字符(包括空格、換行"n”、制表符“t”等)。
- maxsplit:可選參數(shù),用于指定分割的次數(shù),如果不指定或者為-1,則分割次數(shù)沒有限制,否則返回結(jié)果列表的元素個(gè)數(shù)最多為 maxsplit+1
- 返回值:分隔后的字符串列表。
>>> str1 = "i am a good boy!"
>>> str1.split() #采用默認(rèn)分割符進(jìn)行分割
['i', 'am', 'a', 'good', 'boy!']
>>> str1.split(" ") #采用空格進(jìn)行分割
['i', 'am', 'a', 'good', 'boy!']
>>> str1.split(" ", 3) #采用空格進(jìn)行分割,并且只分割前3個(gè)
['i', 'am', 'a', 'good boy!']
注意默認(rèn)情況下按空格分割
檢索字符串
python中字符串的查找方法
1、count()方法
語法格式 : str.count(sub[, start[, end]])
作用:用于檢索指定字符串在另一個(gè)字符串中出現(xiàn)的次數(shù),如果檢索的字符串不存在則返回0,否則返回出現(xiàn)的次數(shù)。
參數(shù)說明
- str:表示原字符串
- sub:表示要檢索的子字符串
- start:可選參數(shù),表示檢索范圍的起始位置的索引,如果不指定,則從頭開始檢索
- end:可選參數(shù),表示檢索范圍的結(jié)束位置的索引,如果不指定,則一直檢索到結(jié)尾
>>> str1 = "hello world"
>>> print(str1.count('o'))
2
2、find()方法
語法格式 : str.find(sub[, start[, end]])
作用:檢索是否包含指定的字符串,如果檢索的字符串不存在則返回-1,否則返回首次出現(xiàn)該字符串時(shí)的索引。
>>> str1 = "hello world!"
>>> str1.find('wo')
6
3、index()方法
語法格式 : str.index(sub[, start[, end]])
作用:和find方法類似,也用于檢索是否包含指定的字符串,使用index方法,當(dāng)指定的字符串不存在時(shí)會(huì)拋異常。
>>> str1 = "hello world!"
>>> str1.index('w')
6
>>> str1.index('m')
Traceback (most recent call last):
File "<pyshell#6>", line 1, in <module>
str1.index('m')
ValueError: substring not found
>>> str1.find('m')
-1
4、startswith()方法
語法格式 : str.startswith(prefix[, start[, end]])
作用:檢索字符串是否以指定的字符串開頭,如果是則返回true,否則返回false。
>>> str1 = "hello world!"
>>> str1.startswith('hello')
True
>>> str1.startswith('hi')
False
>>>
5、endswith()方法
語法格式 : str.endswith(prefix[, start[, end]])
作用:檢索字符串是否以指定的字符串結(jié)尾,如果是則返回true,否則返回false。
>>> str1 = "hello world!"
>>> str1.endswith('world!')
True
>>> str1.endswith('haha')
False
字符串的大小寫轉(zhuǎn)換
1、lower()方法
語法格式 : str.lower()
作用:將字符串中的大寫字母轉(zhuǎn)換為小寫字母
>>> str1 = "Hello World!" >>> str1.lower() 'hello world!'
2、upper()方法
語法格式 : str.upper()
作用:將字符串中的小寫字母轉(zhuǎn)換為大寫字母
>>> str1 = "Hello World!" >>> str1.upper() 'HELLO WORLD!'
去除字符串中的空格和特殊字符
開發(fā)中,我們會(huì)遇到這樣的需求,字符串前后(左右側(cè))不允許出現(xiàn)空格和特殊字符或者將用戶輸入的字符串中誤輸入的空格去除掉。這時(shí)我們就需要用到strip函數(shù)。
1、strip()方法
語法格式 : str.strip([chars])
作用:去除字符串前后(左右側(cè))的空格或特殊字符
>>> str1 = " hello world! "
>>> str1.strip()
'hello world!'
>>> str2 = "#hello world#@#"
>>> str2.strip('#')
'hello world#@'
>>> str3 = "@hello world!@."
>>> str3.strip('@.')
'hello world!'
2、lstrip()方法
語法格式 : str.lstrip([chars])
作用:去除字符串前面(左側(cè))的空格或特殊字符
>>> str1 = " hello world! "
>>> str1.lstrip()
'hello world! '
>>> str2 = "#hello world#@#"
>>> str2.lstrip('#')
'hello world#@#'
>>> str3 = "@.hello world!@."
>>> str3.lstrip('@.')
'hello world!@.'
3、rstrip()方法
語法格式 : str.rstrip([chars])
作用:去除字符串后面(右側(cè))的空格或特殊字符
>>> str1 = " hello world! "
>>> str1.rstrip()
' hello world!'
>>> str2 = "#hello world#@#"
>>> str2.rstrip('#')
'#hello world#@'
>>> str3 = "@.hello world!@."
>>> str3.rstrip('@.')
'@.hello world!'
格式化字符串
所謂格式化字符串就是先制定一個(gè)模板,在模板中預(yù)留幾個(gè)空位,然后根據(jù)需要填上相應(yīng)的內(nèi)容。
使用“%”操作符
語法格式: '%[-][+][0][.n]格式化字符'%exp
參數(shù)說明
- -:可選參數(shù),用于指定左對齊,正數(shù)前方無符號,負(fù)數(shù)前面加負(fù)號
- +:可選參數(shù),用于指定右對齊,正數(shù)前方加正號,負(fù)數(shù)前方加負(fù)號
- 0:可選參數(shù),表示右對齊,正數(shù)前方無符號,負(fù)數(shù)前方加負(fù)號,用0填充空白處(一般與m參數(shù)一起使用)
- m:可選參數(shù),表示占有寬度
- n:可選參數(shù),表示小數(shù)點(diǎn)后保留的位數(shù)
- 格式化字符:用于指定類型,其值如下表所示

exp:要轉(zhuǎn)換的項(xiàng),如果要指定的項(xiàng)有多個(gè),需要通過元組的形式進(jìn)行指定,但不能使用列表。
>>> template = '學(xué)號:%d,姓名:%s,班級:%s' >>> print(template% (123,'張三','一年級')) 學(xué)號:123,姓名:張三,班級:一年級
總結(jié)
以上所述是小編給大家介紹的Python中常用的8種字符串操作方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Python實(shí)現(xiàn)解析Html的方法與對比
在最近需要的需求中,需要?python?獲取網(wǎng)頁內(nèi)容,并從html中獲取到想要的內(nèi)容,本文主要介紹了兩種常用方法并進(jìn)行了對比,感興趣的可以了解下2024-03-03
Python 中如何使用 setLevel() 設(shè)置日志級別
這篇文章主要介紹了在 Python 中使用setLevel() 設(shè)置日志級別,Python 提供了一個(gè)單獨(dú)的日志記錄模塊作為其標(biāo)準(zhǔn)庫的一部分,以簡化日志記錄,本文將討論日志記錄 setLevel 及其在 Python 中的工作方式,需要的朋友可以參考下2023-07-07
python如何給字典的鍵對應(yīng)的值為字典項(xiàng)的字典賦值
這篇文章主要介紹了python如何給字典的鍵對應(yīng)的值為字典項(xiàng)的字典賦值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
python實(shí)現(xiàn)在列表中查找某個(gè)元素的下標(biāo)示例
這篇文章主要介紹了python實(shí)現(xiàn)在列表中查找某個(gè)元素的下標(biāo)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

