Python字符串詳細(xì)介紹
簡介
字符串序列用于表示和存儲文本,python中字符串是不可變的,一旦聲明,不能改變
通常由單引號(' ),雙引號(" ),三引號(''' """)包圍
其中三引號可以由多行組成,編寫多行文本的快捷語法,常用語文檔字符串,在文件的特定地點(diǎn),被當(dāng)做注釋。便捷的多行注釋
Python實(shí)際三類字符串:
1.通常意義字符串(str)
2.原始字符串,以大寫R 或 小寫r開始,r'',不對特殊字符進(jìn)行轉(zhuǎn)義
3.Unicode字符串,u'' basestring子類
在 Python 中,字符串是“不可改變的序列”
1.不可變
2.滿足序列基本操作,按位置存取,切片及索引
字符串
1.獲得幫助:
>>> help(str)
>>> dir(str)
>>> help(str.replace)
2.不可變性
在創(chuàng)建之后就不能就地改變(同java),不能通過對其某一位置進(jìn)行賦值而改變字符劃分為不可變序列,這些字符串所包含的字符存在從左到右的順序,不可在原處修改。python中字符串相當(dāng)于一個(gè)不可變序列的列表,一旦聲明,每個(gè)字符位置固定
意味著若想改變,必須新建一個(gè)!
>>>s='spam'
>>>s[0]='k' #TypeError
#修改字符串類似java,重新賦值
s = ‘k' + s[1:]
原始字符串
原始字符串常量,r”abcd”,(r/R)即去掉了反斜線轉(zhuǎn)義機(jī)制。關(guān)閉轉(zhuǎn)義機(jī)制,即\不再表示轉(zhuǎn)義
用處:
1.正則表達(dá)式
用于處理正則表達(dá)式,減少反斜杠
p4search = re.compile(r'\s*')
2.系統(tǒng)路徑
可以方便地表示系統(tǒng)路徑
path = r'e:\book'
unicode字符串
Unicode是書寫國際文本的標(biāo)準(zhǔn)方法。
Python允許你處理Unicode文本——你只需要在字符串前加上前綴u或U。例如,u"This is a Unicode string."
BP: 在你處理文本文件的時(shí)候使用Unicode字符串,特別是當(dāng)你知道這個(gè)文件含有用非英語的語言寫的文本。
常用操作
1.基本操作
+ :string1+string2 #聯(lián)接字符串,將后一個(gè)串鏈接到前一個(gè)串的后面
Python不允許在+表達(dá)式中出現(xiàn)其他類型,需要手工轉(zhuǎn)【這點(diǎn)不同于java】‘a(chǎn)bc'+str(9)
* :string*n #創(chuàng)建一個(gè)新字符串重復(fù)n次原來的串
[] :string[n] #從字符串中獲取對應(yīng)位置的一個(gè)字符
[:] :string[n:m] #截取字符串,如果為:m從頭到m如果為n:從n到尾
in :char in string #判斷一個(gè)字符是否在串中,如果在返回為真(True)
not in :char not in string #判斷一個(gè)字符是否不在串中,如果在返回為真(True)
r/R : r/Rstring #禁止轉(zhuǎn)義字符的實(shí)際意義,整個(gè)字符為原始意義
len() : 長度len(s)
2.類型轉(zhuǎn)換
字符串和數(shù)字相互轉(zhuǎn)換
字符串到數(shù)字int/float/long
數(shù)字到字符串str
>>> int(42)
42
>>> int('42')
42
>>> str(42)
'42'
>>> float('42.0')
42.0
>>> str(42.0)
'42.0'
或者使用string模塊的函數(shù)
s:進(jìn)行轉(zhuǎn)換的字符串, base:可選,目標(biāo)進(jìn)制
import string
string.atoi(s[,base]) #base默認(rèn)為10,如果為0,那么s就可以是012或0x23這種形式的字符串,如果是16那么s就只能是0x23或0X12這種形式的字符串
string.atol(s[,base]) #轉(zhuǎn)成long
string.atof(s[,base]) #轉(zhuǎn)成float
字符串和列表的轉(zhuǎn)換
字符串轉(zhuǎn)列表:
s='spam'
l = list(s)
l2 = "hello world".spilt()
列表轉(zhuǎn)字符串
k = ‘'.join(l)
注意,不能join列表中的非字符串
3.修改字符串
s = s + 'a'
s = s[3:] + ‘b'
s = s.replace(‘pl','pa')
a = '' #賦值空
del a #整個(gè)變量刪除
4.索引和分片
索引s[i]
s[0]首個(gè)
s[-1] = s[len(s)-1] 倒數(shù)第一個(gè)
分片s[i:j]
不含上邊界,s[1:3] 取[1-2]
s[1:]取1到結(jié)束 s[:3] 取開始到2
s[:-1]開始到倒數(shù)第二個(gè)
s[:]開始到結(jié)尾,相當(dāng)于一個(gè)復(fù)制
s[1:10:2] 取1-9,步長=2
s[a:b:-2] 步長為負(fù)數(shù),兩個(gè)邊界意義反轉(zhuǎn)了,表示從b+1到a,步長-2
s='abcdefg'
s[5:1:-1] 得到 fedc
s[1:3] == s[slice(1,3)] 內(nèi)置函數(shù)
字符串格式化
這里只介紹基本字符串格式化,擴(kuò)展在后續(xù)篇幅介紹%c 單個(gè)字符%d 十進(jìn)制整數(shù)%o 八進(jìn)制整數(shù)%s 字符串%x 十六進(jìn)制整數(shù),其中字母小寫%X 十六進(jìn)制整數(shù),其中字母大寫
>>> str = "so %s a day!"
>>> str % 'beautiful'
'so beautiful a day!'
>>> '{0} is {1}'.format('a','b')
'a is b'
>>> template = "{0}, {1} and {2}"
>>> template.format('a', 'b', 'c')
'a, b and c'
內(nèi)建函數(shù)列表
【字符串方法是python文本處理頭號工具】
string.capitalize()
字符串第一個(gè)字符大寫
string.center(width,[,fill])
原字符居中,空格填充至width長度
string.count(str,beg=0,end=len(string))
獲得字符串中某一個(gè)子串的數(shù)目,計(jì)算出現(xiàn)次數(shù),可指定范圍
string.decode(encoding='UTF-8',errors='strict')
解碼字符串,出錯默認(rèn)報(bào)ValueError,除非errors是ignore或replace
string.encode(encoding='UTF-8',errors='strict')
string.endswith(suffix,beg=0,end=len(string))
是否以**結(jié)尾
string.expandtabs(tabsize=8)
把字符串中tab轉(zhuǎn)為空格,默認(rèn)8個(gè)
string.find(str,beg=0,end=len(stirng))
檢測是否包含str,存在返回開始索引,否則返回-1
string.index(str,begin=0,end=len(string))
同find,不存在報(bào)異常,ValueError
string.isalnum()
至少一個(gè)字符,且所有字符均為字母或數(shù)字,True. 檢測字符串是否只包含0-9A-Za-z
string.isalpha()
至少一個(gè)字符,所有字符都是字母,True. 檢測字符串是否只包含字母
string.isdecimal()
只包含十進(jìn)制數(shù),True
stirng.isdigit()
只包含數(shù)字,True. 檢測字符串是否僅包含數(shù)字
string.islower()
至少一個(gè)區(qū)分大小寫字符且所有字符小寫,True. 檢測字符串是否均為小寫字母
string.isnumeric()
只含數(shù)字字符,True
string.isspace()
只包含空格,True. 檢測字符串是否均為空白字符
string.istitle()
標(biāo)題化字符,True. 檢測字符串中的單詞是否為首字母大寫
string.isupper()
至少一個(gè)區(qū)分大小寫字符且所有字符大寫,True. 檢測字符串是否均為大寫字母
string.join(seq)
以string作為分隔符,seq中所有元素合并為新的字符串. 將原字符串插入?yún)?shù)字符串中的每兩個(gè)字符之間
string.ljust(width)
返回一個(gè)原字符串左對齊,空格補(bǔ)充至長度width
string.lower()
轉(zhuǎn)小寫. 將字符串全部轉(zhuǎn)為小寫
string.lstrip()
截掉左側(cè)的空格
string.partition(str)
= find+split,從str出現(xiàn)第一個(gè)位置,截?cái)酁閜re_str,str,after_str元組,不含str則pre_str=strstring.replace(str1,str2,num=string.count(str1))替換,指定不超過num次,可作為模板實(shí)現(xiàn)
string.rfind(str,beg=0,end=len(string))
同find,右邊開始
string.rindex(str,beg=0,end=len(string))
同index,右邊開始
string.rjust(width)
右對齊,空格補(bǔ)齊
string.rpartition(str)
同partition,右邊開始
string.rstrip([chars])
清理右側(cè)空白,包括換行符,返回處理后字符串
string.split(str=””, maxsplit =string.count(str))
以str切片,可指定分割次數(shù), 分割字符串,返回列表,默認(rèn)分隔符空格
string.splitlines(num=string.count(‘\n'))
s.splitlines([keepends])按行分隔,可指定分割次數(shù)
string.startswith(obj,beg=0,end=len(string))
以str開頭,True. 檢測字符串是否以某一子串開頭
string.strip([obj])
在string上執(zhí)行l(wèi)strip和rstrip
string.swapcase
反轉(zhuǎn)string中大小寫. 字符串中小寫轉(zhuǎn)大寫,大寫轉(zhuǎn)小寫
string.title()
標(biāo)題花,單詞首字母大寫,其余小寫
string.translate(str,del=””)
s.translate(table)根據(jù)str給出表轉(zhuǎn)換string字符,要過濾的字符放在del參數(shù)中
string.upper()
轉(zhuǎn)大寫. 將字符串全部轉(zhuǎn)為大寫
string.zfill(width)
返回長度width的字符串,原字符串右對齊,前面填充0
len(string)
獲取字符串的長度
最佳實(shí)踐
1.循環(huán)中用到長度
while i < len(stri):
#修改
size = len(stri)
while i < size
2.字符串追加
l = ['a', 'b']
result = ''
for i in l:
result += i
#修改
result = ''.join(l)
其他
1.轉(zhuǎn)義符
幾個(gè)常用:
\n換行,\\反斜杠
\t制表 \'單引號
\r回車 \"雙引號
后續(xù)需擴(kuò)展
字符串編碼詳解
字符串格式化
正則表達(dá)式
字符串涉及常用模塊(序列化/文本包裝等)
相關(guān)文章
Python實(shí)現(xiàn)發(fā)送聲情并茂的郵件內(nèi)容和附件
Python是一種高級編程語言,它可以用于編寫各種類型的應(yīng)用程序,包括發(fā)送電子郵件。本文就來演示如何使用Python發(fā)送HTML格式的電子郵件,感興趣的可以了解一下2023-04-04Python操作mongodb數(shù)據(jù)庫的方法詳解
這篇文章主要介紹了Python操作mongodb數(shù)據(jù)庫的方法,結(jié)合實(shí)例形式詳細(xì)分析了Python下載、安裝pymongo及操作MongoDB數(shù)據(jù)庫相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-12-12Python 讀取千萬級數(shù)據(jù)自動寫入 MySQL 數(shù)據(jù)庫
這篇文章主要介紹了Python 讀取千萬級數(shù)據(jù)自動寫入 MySQL 數(shù)據(jù)庫,本篇文章會給大家系統(tǒng)的分享千萬級數(shù)據(jù)如何寫入到 mysql,分為兩個(gè)場景,兩種方式2022-06-06詳解python實(shí)現(xiàn)可視化的MD5、sha256哈希加密小工具
這篇文章主要介紹了詳解python實(shí)現(xiàn)可視化的MD5、sha256哈希加密小工具,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09matplotlib.subplot()畫子圖并共享y坐標(biāo)軸的方法
Matplotlib的可以把很多張圖畫到一個(gè)顯示界面,本文主要介紹matplotlib.subplot()畫子圖并共享y坐標(biāo)軸的方法,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Python sklearn對文本數(shù)據(jù)進(jìn)行特征化提取
這篇文章主要介紹了Python sklearn對文本數(shù)據(jù)進(jìn)行特征化提取,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-04-04