字符串序列 用於表示和存儲文本,python中字符串是不可變的,一旦聲明,不能改變 java
一般由單引號(' ),雙引號(" ),三引號(''' """)包圍 python
其中三引號能夠由多行組成,編寫多行文本的快捷語法,經常使用語文檔字符串,在文件的特定地點,被當作註釋。便捷的多行註釋 git
Python實際三類字符串: 正則表達式
1.一般意義字符串(str) 2.原始字符串,以大寫R 或 小寫r開始,r'',不對特殊字符進行轉義 3.Unicode字符串,u'' basestring子類
在 Python 中,字符串是「不可改變的序列」 api
1.不可變 2.知足序列基本操做,按位置存取,切片及索引
1.得到幫助: 函數
>>> help(str) >>> dir(str) >>> help(str.replace)
2.不可變性 工具
在建立以後就不能就地改變(同java),不能經過對其某一位置進行賦值而改變字符 劃分爲不可變序列,這些字符串所包含的字符存在從左到右的順序,不可在原處修改。 python中字符串至關於一個不可變序列的列表,一旦聲明,每一個字符位置固定 spa
意味着若想改變,必須新建一個! code
>>>s=’spam’ >>>s[0]=’k’ #TypeError #修改字符串相似java,從新賦值 s = ‘k’ + s[1:]
原始字符串常量,r」abcd」,(r/R)即去掉了反斜線轉義機制。關閉轉義機制,即\再也不表示轉義 orm
用處:
1.正則表達式
用於處理正則表達式,減小反斜槓
p4search = re.compile(r'\s*')
2.系統路徑
能夠方便地表示系統路徑
path = r'e:\book'
Unicode是書寫國際文本的標準方法。
Python容許你處理Unicode文本——你只須要在字符串前加上前綴u或U。例如,u"This is a Unicode string."
BP: 在你處理文本文件的時候使用Unicode字符串,特別是當你知道這個文件含有用非英語的語言寫的文本。
1.基本操做
+ :string1+string2 #聯接字符串,將後一個串連接到前一個串的後面 Python不容許在+表達式中出現其餘類型,須要手工轉【這點不一樣於java】‘abc’+str(9) * :string*n #建立一個新字符串重複n次原來的串 [] :string[n] #從字符串中獲取對應位置的一個字符 [:] :string[n:m] #截取字符串,若是爲:m從頭到m若是爲n:從n到尾 in :char in string #判斷一個字符是否在串中,若是在返回爲真(True) not in :char not in string #判斷一個字符是否不在串中,若是在返回爲真(True) r/R : r/Rstring #禁止轉義字符的實際意義,整個字符爲原始意義 len() : 長度len(s)
2.類型轉換
字符串到數字 int/float/long
數字到字符串 str
>>> int(42) 42 >>> int('42') 42 >>> str(42) '42' >>> float('42.0') 42.0 >>> str(42.0) '42.0'
或者使用string模塊的函數
s:進行轉換的字符串, base:可選,目標進制
import string string.atoi(s[,base]) #base默認爲10,若是爲0,那麼s就能夠是012或0x23這種形式的字符串,若是是16那麼s就只能是0x23或0X12這種形式的字符串 string.atol(s[,base]) #轉成long string.atof(s[,base]) #轉成float
字符串轉列表:
s=’spam’ l = list(s) l2 = "hello world".spilt()
列表轉字符串
k = ‘’.join(l)
注意,不能join列表中的非字符串
3.修改字符串
s = s + ’a’ s = s[3:] + ‘b’ s = s.replace(‘pl’,’pa’) a = '' #賦值空 del a #整個變量刪除
4.索引和分片
索引s[i]
s[0]首個 s[-1] = s[len(s)-1] 倒數第一個
分片s[i:j]
不含上邊界,s[1:3] 取[1-2] s[1:]取1到結束 s[:3] 取開始到2 s[:-1]開始到倒數第二個 s[:]開始到結尾,至關於一個複製 s[1:10:2] 取1-9,步長=2 s[a:b:-2] 步長爲負數,兩個邊界意義反轉了,表示從b+1到a,步長-2 s=’abcdefg’ s[5:1:-1] 獲得 fedc s[1:3] == s[slice(1,3)] 內置函數
這裏只介紹基本字符串格式化,擴展在後續篇幅介紹 %c 單個字符 %d 十進制整數 %o 八進制整數 %s 字符串 %x 十六進制整數,其中字母小寫 %X 十六進制整數,其中字母大寫
>>> 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'
【字符串方法是python文本處理頭號工具】
字符串第一個字符大寫
原字符居中,空格填充至width長度
得到字符串中某一個子串的數目,計算出現次數,可指定範圍
解碼字符串,出錯默認報ValueError,除非errors是ignore或replace
是否以**結尾
把字符串中tab轉爲空格,默認8個
檢測是否包含str,存在返回開始索引,不然返回-1
同find,不存在報異常,ValueError
至少一個字符,且全部字符均爲字母或數字,True. 檢測字符串是否只包含0-9A-Za-z
至少一個字符,全部字符都是字母,True. 檢測字符串是否只包含字母
只包含十進制數,True
只包含數字,True. 檢測字符串是否僅包含數字
至少一個區分大小寫字符且全部字符小寫,True. 檢測字符串是否均爲小寫字母
只含數字字符,True
只包含空格,True. 檢測字符串是否均爲空白字符
標題化字符,True. 檢測字符串中的單詞是否爲首字母大寫
至少一個區分大小寫字符且全部字符大寫,True. 檢測字符串是否均爲大寫字母
以string做爲分隔符,seq中全部元素合併爲新的字符串. 將原字符串插入參數字符串中的每兩個字符之間
返回一個原字符串左對齊,空格補充至長度width
轉小寫. 將字符串所有轉爲小寫
截掉左側的空格
= find+split,從str出現第一個位置,截斷爲pre_str,str,after_str元組,不含str則pre_str=str
string.replace(str1,str2,num=string.count(str1))
替換,指定不超過num次,可做爲模板實現
同find,右邊開始
同index,右邊開始
右對齊,空格補齊
同partition,右邊開始
清理右側空白,包括換行符,返回處理後字符串
以str切片,可指定分割次數, 分割字符串,返回列表,默認分隔符空格
s.splitlines([keepends]) 按行分隔,可指定分割次數
以str開頭,True. 檢測字符串是否以某一子串開頭
在string上執行lstrip和rstrip
反轉string中大小寫. 字符串中小寫轉大寫,大寫轉小寫
標題花,單詞首字母大寫,其他小寫
s.translate(table) 根據str給出錶轉換string字符,要過濾的字符放在del參數中
轉大寫. 將字符串所有轉爲大寫
返回長度width的字符串,原字符串右對齊,前面填充0
獲取字符串的長度
1.循環中用到長度
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.轉義符
幾個經常使用:
\n換行,\\反斜槓 \t製表 \'單引號 \r回車 \"雙引號