Python str型別學習總結(一)

hyc457427412hychyc發表於2020-10-20

有序不可變
str1=‘i am a student’
有序:
str1[2:3]
不可變
1、字串拼接+
i、+ 返回一個新的字串

>>> s
'abc'
>>> s1='defg'
>>> s+s1
'abcdefg'

ii、“str”.join(interable)
將序列中的元素以指定的字串str連線生成一個新的字串
interable必須是字串

>>> s='abc'
>>> s
'abc'
>>> ' '.join(s)
'a b c'
>>> 'test'.join(s)
'atestbtestc'

2、字串分割
i、split(sep=None,maxsplit=-1) 從左至右
maxsplit指分割的次數

>>> s='i am a student'
>>> s
'i am a student'
>>> s.split()			#預設按照空白字元+ 分隔
['i', 'am', 'a', 'student']
>>> s.split('a')		#給定分隔符,分隔後,分隔符就不見了
['i ', 'm ', ' student']
>>> s.split('a',maxsplit=1)#給定分隔符和最大分隔次數
['i ', 'm a student']

ii、rsplit
從右至左

>>> s='ab kj kjksjfksj skdfj'
>>> s.split('k')
['ab ', 'j ', 'j', 'sjf', 'sj s', 'dfj']
>>> s.rsplit('k')
['ab ', 'j ', 'j', 'sjf', 'sj s', 'dfj']

從左至右和從右至左 分割結果都是一樣的

>>> s.rsplit('k',maxsplit=2)     #
['ab kj kjksjf', 'sj s', 'dfj']
>>> s.split('k',maxsplit=2)
['ab ', 'j ', 'jksjfksj skdfj']

iii、spiltlines(keepends)
按分隔符\n分割,返回一個list
keepends 預設false,可不填寫,不保留換行符
在這裡插入圖片描述
為True時,保留\n換行符
在這裡插入圖片描述
v、partition(sep)—>(head,sep,tail)
按指定分割符分割,
如果字串包含指定的分隔符,則返回一個3元的元組,第一個為分隔符左邊的子串,第二個為分隔符本身,第三個為分隔符右邊的子串。
在這裡插入圖片描述

如果找不到分隔符,則只返回(head,’ ‘,’ ')在這裡插入圖片描述
vi、rpartition
從右向左開始找
在這裡插入圖片描述
注意partition和rpartition的區別

>>>s='i  am a student tes'
>>>s.partition('t')
('i  am a s', 't', 'udent tes')
>>> s.rpartition('t')
('i  am a student ', 't', 'es')

VII、字串查詢
i、find
1、teststr.find(‘substr’)
查詢substr子串在指定字串teststr中是否存在,如果存在,則返回索引值,如果不存在,則返回-1
在這裡插入圖片描述
2、rfind
從右開始找,但返回還是正索引
ii、index
功能同find,只是異常處理不同,找不到時返回ValueError
3、replace
replace() 方法把字串中的 old(舊字串) 替換成 new(新字串),如果指定第三個引數max,則替換不超過 max 次。
4、startwith
startswith(substr, beg=0,end=len(string))
start,end可選引數,
字串是否以suffix開始,返回True/False
在這裡插入圖片描述
5、endswith
str.endswith(suffix[, start[, end]])
start,end可選引數,
字串是否以suffix結束,返回True/False
在這裡插入圖片描述
VIII、其他
title 首字母大寫
capitalize 每個單詞的首字母大寫
isalpha() 是否只包含字母(空格也不行)
isdecimal() 是否純數字

相關文章