日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
python中有哪些字符串的操作方法-創(chuàng)新互聯(lián)

這篇文章給大家介紹python中有哪些字符串的操作方法,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

成都創(chuàng)新互聯(lián)公司網(wǎng)站設(shè)計(jì),為客戶量身定制各類網(wǎng)站建設(shè)業(yè)務(wù),包括企業(yè)型、電子商務(wù)型、成都響應(yīng)式網(wǎng)站建設(shè)公司、行業(yè)門戶型等各類網(wǎng)站,實(shí)戰(zhàn)經(jīng)驗(yàn)豐富,成功案例眾多。以客戶利益為出發(fā)點(diǎn),成都創(chuàng)新互聯(lián)公司網(wǎng)站制作為客戶規(guī)劃、定制網(wǎng)站設(shè)計(jì)符合企業(yè)需求、帶有營銷價(jià)值的網(wǎng)絡(luò)建站方案認(rèn)真對待每一個(gè)客戶,我們不用口頭的語言來吹擂我們的優(yōu)秀,上千多家的成功案例見證著我們的成長。

1.大小寫轉(zhuǎn)換

1.1 lower、upper

S.lower()
S.upper()

返回S字符串的小寫、大寫格式。(注意,這是新生成的字符串,在另一片內(nèi)存片段中,后文將不再解釋這種行為)

例如:

>>> print('ab XY'.lower())
ab xy
>>> print('ab XY'.upper())
AB XY

1.2 title、capitalize

S.title()
S.capitalize()

前者返回S字符串中所有單詞首字母大寫且其他字母小寫的格式,后者返回首字母大寫、其他字母全部小寫的新字符串。

例如:

>>> print('ab XY'.title())
Ab Xy
>>> print('abc DE'.capitalize())
Abc de

1.3 swapcase

S.swapcase()

swapcase()對S中的所有字符串做大小寫轉(zhuǎn)換(大寫-->小寫,小寫-->大寫)。

>>> print('abc XYZ'.swapcase())
ABC xyz

2.isXXX判斷

2.1 isalpha,isdecimal,isdigit,isnumeric,isalnum

S.isdecimal()
S.isdigit()
S.isnumeric()
S.isalpha()
S.isalnum()

測試字符串S是否是數(shù)字、字母、字母或數(shù)字。對于非Unicode字符串,前3個(gè)方法是等價(jià)的。

例如:

>>> print('34'.isdigit())
True
>>> print('abc'.isalpha())
True
>>> print('a34'.isalnum())
True

2.2 islower,isupper,istitle

S.islower()
S.isupper()
S.istitle()

判斷是否小寫、大寫、首字母大寫。要求S中至少要包含一個(gè)字符串字符,否則直接返回False。例如不能是純數(shù)字。
注意,istitle()判斷時(shí)會(huì)對每個(gè)單詞的首字母邊界判斷。例如,word1 Word2、word1_Word2、word1()Word2中都包含兩個(gè)單詞,它們的首字母都是"w"和"W"。因此,如果用istitle()去判斷它們,將返回False,因?yàn)閣是小寫。

例如:

>>> print('a34'.islower())
True
>>> print('AB'.isupper())
True
>>> print('Aa'.isupper())
False
>>> print('Aa Bc'.istitle())
True
>>> print('Aa_Bc'.istitle())
True
>>> print('Aa bc'.istitle())
False
>>> print('Aa_bc'.istitle())
False

# 下面的返回False,因?yàn)榉鞘鬃帜窩不是小寫
>>> print('Aa BC'.istitle())
False

2.3 isspace,isprintable,isidentifier

S.isspace()
S.isprintable()
S.isidentifier()

分別判斷字符串是否是空白(空格、制表符、換行符等)字符、是否是可打印字符(例如制表符、換行符就不是可打印字符,但空格是)、是否滿足標(biāo)識符定義規(guī)則。

例如:

判斷是否為空白。沒有任何字符是不算是空白。

>>> print(' '.isspace())
True
>>> print(' \t'.isspace())
True
>>> print('\n'.isspace())
True
>>> print(''.isspace())
False
>>> print('Aa BC'.isspace())
False

判斷是否是可打印字符。

>>> print('\n'.isprintable())
False
>>> print('\t'.isprintable())
False
>>> print('acd'.isprintable())
True
>>> print(' '.isprintable())
True
>>> print(''.isprintable())
True

判斷是否滿足標(biāo)識符定義規(guī)則。

標(biāo)識符定義規(guī)則為:只能是字母或下劃線開頭、不能包含除數(shù)字、字母和下劃線以外的任意字符。

>>> print('abc'.isidentifier())
True
>>> print('2abc'.isidentifier())
False
>>> print('abc2'.isidentifier())
True
>>> print('_abc2'.isidentifier())
True
>>> print('_abc_2'.isidentifier())
True
>>> print('_Abc_2'.isidentifier())
True
>>> print('Abc_2'.isidentifier())
True

3.填充

3.1 center

S.center(width[, fillchar])

將字符串居中,左右兩邊使用fillchar進(jìn)行填充,使得整個(gè)字符串的長度為width。fillchar默認(rèn)為空格。如果width小于字符串的長度,則無法填充直接返回字符串本身(不會(huì)創(chuàng)建新字符串對象)。

例如:

使用下劃線填充并居中字符串

>>> print('ab'.center(4,'_'))
_ab_
>>> print('ab'.center(5,'_'))
__ab_

使用默認(rèn)的空格填充并居中字符串

>>> print('ab'.center(4))
 ab 
>>> print(len('ab'.center(4)))
4

width小于字符串長度

>>> print('abcde'.center(3))
abcde

3.2 ljust和rjust

S.ljust(width[, fillchar])
S.rjust(width[, fillchar])

ljust()使用fillchar填充在字符串S的右邊,使得整體長度為width。rjust()則是填充在左邊。如果不指定fillchar,則默認(rèn)使用空格填充。

如果width小于或等于字符串S的長度,則無法填充,直接返回字符串S(不會(huì)創(chuàng)建新字符串對象)。

例如:

>>> print('xyz'.ljust(5,'_'))
xyz__
>>> print('xyz'.rjust(5,'_'))
__xyz

3.3 zfill

S.zfill(width)

用0填充在字符串S的左邊使其長度為width。如果S前右正負(fù)號+/-,則0填充在這兩個(gè)符號的后面,且符號也算入長度。
如果width小于或等于S的長度,則無法填充,直接返回S本身(不會(huì)創(chuàng)建新字符串對象)。

>>> print('abc'.zfill(5))
00abc

>>> print('-abc'.zfill(5))
-0abc

>>> print('+abc'.zfill(5))
+0abc

>>> print('42'.zfill(5))
00042

>>> print('-42'.zfill(5))
-0042

>>> print('+42'.zfill(5))
+0042

4.子串搜索

4.1 count

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

返回字符串S中子串sub出現(xiàn)的次數(shù),可以指定從哪里開始計(jì)算(start)以及計(jì)算到哪里結(jié)束(end),索引從0開始計(jì)算,不包括end邊界。

例如:

>>> print('xyabxyxy'.count('xy'))
3

# 次數(shù)2,因?yàn)閺膇ndex=1算起,即從'y'開始查找,查找的范圍為'yabxyxy'
>>> print('xyabxyxy'.count('xy',1))
2

# 次數(shù)1,因?yàn)椴话╡nd,所以查找的范圍為'yabxyx'
>>> print('xyabxyxy'.count('xy',1,7))
1

# 次數(shù)2,因?yàn)椴檎业姆秶鸀?#39;yabxyxy'
>>> print('xyabxyxy'.count('xy',1,8))
2

4.2 endswith和startswith

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

endswith()檢查字符串S是否已suffix結(jié)尾,返回布爾值的True和False。suffix可以是一個(gè)元組(tuple)。可以指定起始start和結(jié)尾end的搜索邊界。

同理startswith()用來判斷字符串S是否是以prefix開頭。

例如:

suffix是普通的字符串時(shí)。

>>> print('abcxyz'.endswith('xyz'))
True
 
# False,因?yàn)樗阉鞣秶鸀?#39;yz'
>>> print('abcxyz'.endswith('xyz',4))
False
 
# False,因?yàn)樗阉鞣秶鸀?#39;abcxy'
>>> print('abcxyz'.endswith('xyz',0,5))
False
>>> print('abcxyz'.endswith('xyz',0,6))
True

suffix是元組(tuple)時(shí),只要tuple中任意一個(gè)元素滿足endswith的條件,就返回True。

# tuple中的'xyz'滿足條件
>>> print('abcxyz'.endswith(('ab','xyz')))
True
 
# tuple中'ab'和'xy'都不滿足條件
>>> print('abcxyz'.endswith(('ab','xy')))
False
 
# tuple中的'z'滿足條件
>>> print('abcxyz'.endswith(('ab','xy','z')))
True

4.3 find,rfind和index,rindex

S.find(sub[, start[, end]])
S.rfind(sub[, start[, end]])¶
S.index(sub[, start[, end]])
S.rindex(sub[, start[, end]])

find()搜索字符串S中是否包含子串sub,如果包含,則返回sub的索引位置,否則返回"-1"。可以指定起始start和結(jié)束end的搜索位置。

index()和find()一樣,唯一不同點(diǎn)在于當(dāng)找不到子串時(shí),拋出ValueError錯(cuò)誤。

rfind()則是返回搜索到的最右邊子串的位置,如果只搜索到一個(gè)或沒有搜索到子串,則和find()是等價(jià)的。

同理rindex()。

例如:

>>> print('abcxyzXY'.find('xy'))
3
>>> print('abcxyzXY'.find('Xy'))
-1
>>> print('abcxyzXY'.find('xy',4))
-1

>>> print('xyzabcabc'.find('bc'))
4
>>> print('xyzabcabc'.rfind('bc'))
7

>>> print('xyzabcabc'.rindex('bcd'))
Traceback (most recent call last):
 File "", line 1, in 
ValueError: substring not found

可以使用in操作符來判斷字符串S是否包含子串sub,它返回的不是索引位置,而是布爾值。

>>> 'xy' in 'abxycd'
True
>>> 'xyz' in 'abxycd'
False

5.替換

5.1 replace

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

將字符串中的子串old替換為new字符串,如果給定count,則表示只替換前count個(gè)old子串。如果S中搜索不到子串old,則無法替換,直接返回字符串S(不創(chuàng)建新字符串對象)。

>>> print('abcxyzoxy'.replace('xy','XY'))
abcXYzoXY
>>> print('abcxyzoxy'.replace('xy','XY',1))
abcXYzoxy
>>> print('abcxyzoxy'.replace('mn','XY',1))
abcxyzoxy

5.2 expandtabs

S.expandtabs(N)

將字符串S中的\t替換為一定數(shù)量的空格。默認(rèn)N=8。

注意,expandtabs(8)不是將\t直接替換為8個(gè)空格。例如'xyz\tab'.expandtabs()會(huì)將\t替換為5個(gè)空格,因?yàn)?xyz"占用了3個(gè)字符位。

另外,它不會(huì)替換換行符(\n或\r)時(shí)。

例如:

>>> '01\t012\t0123\t01234'.expandtabs(4)
'01 012 0123 01234'

>>> '01\t012\t0123\t01234'.expandtabs(8)
'01  012  0123 01234'

>>> '01\t012\t0123\t01234'.expandtabs(7)
'01  012 0123 01234'

>>> print('012\t0123\n01234'.expandtabs(7))
012 0123
01234

5.3 translate和maketrans

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

str.maketrans()生成一個(gè)字符一 一映射的table,然后使用translate(table)對字符串S中的每個(gè)字符進(jìn)行映射。

如果你熟悉Linux,就知道tr命令,translate()實(shí)現(xiàn)的功能和tr是類似的。

例如,現(xiàn)在想要對"I love fairy"做一個(gè)簡單的加密,將里面部分字符都替換為數(shù)字,這樣別人就不知道轉(zhuǎn)換后的這句話是什么意思。

>>> in_str='abcxyz'
>>> out_str='123456'

# maketrans()生成映射表
>>> map_table=str.maketrans(in_str,out_str)

# 使用translate()進(jìn)行映射
>>> my_love='I love fairy'
>>> result=my_love.translate(map_table)
>>> print(result)
I love f1ir5

注意,maketrans(x[, y[, z]])中的x和y都是字符串,且長度必須相等。

如果maketrans(x[, y[, z]])給定了第三個(gè)參數(shù)z,這這個(gè)參數(shù)字符串中的每個(gè)字符都會(huì)被映射為None。

例如,不替換"o"和"y"。

>>> in_str='abcxyz'
>>> out_str='123456'
>>> map_table=str.maketrans(in_str,out_str,'ay')
>>> my_love='I love fairy'
>>> result=my_love.translate(map_table)
>>> print(result)
I love fir

6.分割

6.1 partition和rpartition

S.partition(sep)
S.rpartition(sep)

搜索字符串S中的子串sep,并從sep處對S進(jìn)行分割,最后返回一個(gè)包含3元素的元組:sep左邊的部分是元組的第一個(gè)元素,sep自身是元組的二個(gè)元素,sep右邊是元組的第三個(gè)元素。

partition(sep)從左邊第一個(gè)sep進(jìn)行分割,rpartition(sep)從右邊第一個(gè)sep進(jìn)行分割。

如果搜索不到sep,則返回的3元素元組中,有兩個(gè)元素為空。partition()是后兩個(gè)元素為空,rpartition()是前兩個(gè)元素為空。

例如:

# 只搜索到一個(gè)sep時(shí),兩者結(jié)果相同
>>> print('abcxyzopq'.partition('xy'))
('abc', 'xy', 'zopq')
>>> print('abcxyzopq'.rpartition('xy'))
('abc', 'xy', 'zopq')

# 搜索到多個(gè)sep時(shí),分別從左第一個(gè)、右第一個(gè)sep分割
>>> print('abcxyzxyopq'.partition('xy'))
('abc', 'xy', 'zxyopq')
>>> print('abcxyzxyopq'.rpartition('xy'))
('abcxyz', 'xy', 'opq')

# 搜索不到sep
>>> print('abcxyzxyopq'.partition('xyc'))
('abcxyzxyopq', '', '')
>>> print('abcxyzxyopq'.rpartition('xyc'))
('', '', 'abcxyzxyopq')

6.2 split、rsplit和splitlines

S.split(sep=None, maxsplit=-1)
S.rsplit(sep=None, maxsplit=-1)
S.splitlines([keepends=True])

都是用來分割字符串,并生成一個(gè)列表。

split()根據(jù)sep對S進(jìn)行分割,maxsplit用于指定分割次數(shù),如果不指定maxsplit或者給定值為"-1",則會(huì)從做向右搜索并且每遇到sep一次就分割直到搜索完字符串。如果不指定sep或者指定為None,則改變分割算法:以空格為分隔符,且將連續(xù)的空白壓縮為一個(gè)空格。

rsplit()和split()是一樣的,只不過是從右邊向左邊搜索。

splitlines()用來專門用來分割換行符。雖然它有點(diǎn)像split('\n')或split('\r\n'),但它們有些區(qū)別,見下文解釋。

首先是split()的示例分析(rsplit()示例略)。

# sep為單個(gè)字符時(shí)
>>> '1,2,3'.split(',')
['1', '2', '3']

>>> '1,2,3'.split(',',1)
['1', '2,3']  # 只分割了一次

>>> '1,2,,3'.split(',')
['1', '2', '', '3'] # 不會(huì)壓縮連續(xù)的分隔符

>>> '<>'.split('<')
['', 'hello>', '>', 'world>']

# sep為多個(gè)字符時(shí)
>>> '<>'.split('<>')
['', '']

# 不指定sep時(shí)
>>> '1 2 3'.split()
['1', '2', '3']

>>> '1 2 3'.split(maxsplit=1)
['1', '2 3']

>>> '  1  2  3  '.split()
['1', '2', '3']

>>> '  1  2  3 \n'.split()
['1', '2', '3']

# 顯式指定sep為空格、制表符、換行符時(shí)
>>> ' 1 2 3 \n'.split(' ')
['', '1', '', '2', '', '3', '', '\n']

>>> ' 1 2 3 \n'.split('\t')
[' 1 2 3 \n']

>>> ' 1 2\n3 \n'.split('\n')
[' 1 2', '3 ', ''] # 注意列表的最后一項(xiàng)''

>>> ''.split('\n')
['']

再是splitlines()的示例分析。

splitlines()中可以指定各種換行符,常見的是\n、\r、\r\n。如果指定keepends為True,則保留所有的換行符。

>>> 'ab c\n\nde fg\rkl\r\n'.splitlines()
['ab c', '', 'de fg', 'kl']

>>> 'ab c\n\nde fg\rkl\r\n'.splitlines(keepends=True)
['ab c\n', '\n', 'de fg\r', 'kl\r\n']

將split()和splitlines()相比較一下:

#### split()
>>> ''.split('\n')
['']      # 因?yàn)闆]換行符可分割

>>> 'One line\n'.split('\n')
['One line', '']

#### splitlines()
>>> "".splitlines()
[]       # 因?yàn)闆]有換行符可分割

>>> 'Two lines\n'.splitlines()
['Two lines']

7.join

S.join(iterable)

將可迭代對象(iterable)中的字符串使用S連接起來。注意,iterable中必須全部是字符串類型,否則報(bào)錯(cuò)。

如果你還是python的初學(xué)者,還不知道iterable是什么,卻想來看看join的具體語法,那么你可以暫時(shí)將它理解為:字符串string、列表list、元組tuple、字典dict、集合set。

例如:

字符串

>>> L='python'
>>> '_'.join(L)
'p_y_t_h_o_n'

元組

>>> L1=('1','2','3')
>>> '_'.join(L1)
'1_2_3'

集合。注意,集合無序。

>>> L2={'p','y','t','h','o','n'}
>>> '_'.join(L2)
'n_o_p_h_y_t'

列表

>>> L2=['py','th','o','n']
>>> '_'.join(L2)
'py_th_o_n'

字典

>>> L3={'name':"malongshuai",'gender':'male','from':'China','age':18}
>>> '_'.join(L3)
'name_gender_from_age'

iterable參與迭代的部分必須是字符串類型,不能包含數(shù)字或其他類型。

>>> L1=(1,2,3)
>>> '_'.join(L1)
Traceback (most recent call last):
 File "", line 1, in 
TypeError: sequence item 0: expected str instance, int found

以下兩種也不能join。

>>> L1=('ab',2)
>>> L2=('AB',{'a','cd'})

8.修剪:strip、lstrip和rstrip

S.strip([chars])
S.lstrip([chars])
S.rstrip([chars])

分別是移除左右兩邊、左邊、右邊的字符char。如果不指定chars或者指定為None,則默認(rèn)移除空白(空格、制表符、換行符)。

唯一需要注意的是,chars可以是多個(gè)字符序列。在移除時(shí),只要是這個(gè)序列中的字符,都會(huì)被移除。

例如:

移除單個(gè)字符或空白。

>>> '  spacious  '.lstrip()
'spacious  '
 
>>> '  spacious  '.rstrip()
'  spacious'
 
>>> 'spacious  '.lstrip('s')
'pacious  '
 
>>> 'spacious'.rstrip('s')
'spaciou'

2.移除字符中的字符。

>>> print('www.example.com'.lstrip('cmowz.'))
example.com
>>> print('wwwz.example.com'.lstrip('cmowz.'))
example.com
>>> print('wwaw.example.com'.lstrip('cmowz.'))
aw.example.com
>>> print('www.example.com'.strip('cmowz.'))
'example'

了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。

關(guān)于python中有哪些字符串的操作方法就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。


文章題目:python中有哪些字符串的操作方法-創(chuàng)新互聯(lián)
當(dāng)前地址:http://www.dlmjj.cn/article/ehdgi.html