豬行天下之Python基礎——3.5 字串

coder-pig發表於2019-04-03

內容簡述:

  • 1、字串(String)

1、字串(String)

字串是日常開發中用的最廣泛的資料型別了,可以是用「單引號」或「雙引號」進行建立。字串是由多個字元拼接成的序列,一般用於表示文字。如果想讓字串包含換行縮排等格式時可以使用「三引號」(''')來修飾,一般列印段落文字時用得較多。另外字串是「不可變資料」,定義以後就不能修改元素了,比如str_1 = "abc",如果呼叫str_1[0] = 'd',這樣是會報錯的,只能 通過 **+, *, 分片等方式 進行「拼接」,間接得到相同的字串內容,不過已經不是原先的字串了,變數指向新的字串,而舊的字串物件最後會被Python的回收機制回收掉

① 字串的基本操作

程式碼示例如下

# 1.字串建立
str_1 = "Hello Python!"
str_2 = str(123)

# 2.分片相關操作(和前面4.4.4列表操作一致)
print("str_1[3] = %s" % str_1[3])
print("str_1[2:] = %s" % str_1[2:])
print("str_1[2:5] = %s" % str_1[2:5])
print("str_1[2:10:2] = %s" % str_1[2:10:2])
print("str_1[0:8] + str_1[8:] = %s" % (str_1[0:8] + str_1[8:]))
print("str_1[6:] * 3 = %s" % (str_1[6:] * 3))
print("str_2的資料型別:%s" % type(str_2))
複製程式碼

執行結果如下

str_1[3] = l
str_1[2:] = llo Python!
str_1[2:5] = llo
str_1[2:10:2] = loPt
str_1[0:8] + str_1[8:] = Hello Python!
str_1[6:] * 3 = Python!Python!Python!
str_2的資料型別:<class 'str'>
複製程式碼

② 轉義字元

python用反斜槓(\)轉義字元,所有轉義字元如下表所示:

轉義字元 作用 轉義字元 作用
行尾的\ 續行符 \000
\ 反斜槓 \n 換行
\' 單引號 \v 縱向製表符
\a 響鈴 \t 橫向製表符
\b 退格 \r 回車
\e 轉義 \f 換頁
\o 八進位制數代表字元 \x 十六進位制數代表字元

③ 字串操作的相關函式

Python字串操作相關的函式有很多,不建議死記,用到的時候查表即可,相關的操作函式
如下表所示:

函式名 作用
capitalize() 把字串的第一個字元改為大寫
casefold() 把整個字串的所有字元改為小寫
center(width) 將字串居中,並使用空格填充至長度width的新字串
count(sub[,start[,end]]) 返同sub在字元申裡邊出現的次數,start和end參數列示範圍,可選
encode(encoding= 'utf-8 ',errors='strict') 以encoding指定的編碼格式對字串進行編碼
endswith(sub[,start[,end]]) 檢查字串是否以sub 子字串結束,如果是返回True,否則返回False。start和end參數列示範圍,可選
expandtabs([tabsize= 8]) 把字串中的tab符號(\t)轉換為空格,如不指定引數,預設的空格數是tabsize=8
find(sub[,start[,end]]) 檢測sub是否包含在字串中,如果有則返回索引值,否則返回-1,start和end參數列示範圍,可選
index(sub[,start[,end]]) 跟find方法一樣,不過如果sub不在string中會產生一個異常
isalnum() 如果字串中至少有一個字元,並且所有字元都是字母或數字則返回True,否則返回False
isalpha() 如果字串至少有一個字串,並且所有字元都是字母則返回True,否則返回False
isdecimal() 如果字串只包含十進位制數字則返回True,否則返回False
isdigit() 如果字串只包含數字則返回True,否則返回False
islower() 如果字串中至少包含一個區分大小寫的字元,並且這些字元都是小寫,則返回True,否則返回False
isnumeric() 如果字串中只包含數字字元,則返回True,否則返回False
isspace() 如果字串中只包含空格,則返回True,否則返回False
istitle() 如果字串是標題化(所有單詞大寫開頭,其餘小寫),則返回True,否則返回False
isupper() 如果字串中至少包含一個區分大小寫的字元,並且這些字元都是大寫,則返回True,否則返回False
join(sub) 以字串作為分隔符,插入到sub中所有的字元之間,使用+去拼接大量字串的時候是很低效率的,
因為加號拼接會引起記憶體賦值一級垃圾回收操作,此時用join來拼接效率會高一些,比如: ''.join(['Hello','Python'])
ljust(width) 返回一個左對齊的字串,並使用空格填充至長度為width的新字串
lower() 轉換字串所有大寫字元為小寫
lstrip() 去除字串左邊的所有空格
partition(sub) 找到子字串sub,把字串分割成3元組(前,pre,後)如果字串中不包含則返回('原字串','','')
replace(old, new[,count]) 把字串中的old子字串替換成new,如果count指定,則替換次數不超過count次
rfind(sub[,start[,end]]) 和find()方法類似,不過是從右開始查詢
rindex(sub[,start[,end]]) 和index()方法類似,不過是從右開始查詢
rjust(width) 返回一個右對齊的字串,並使用空格填充至長度為width的新字串
rpartition(sub) 類似於partition(),不過是從右邊開始查詢
rstrip() 刪除字串末尾的空格
split(sep=None,maxsplit=-1) 不帶引數預設是以空格為分隔符切片字串,如果maxspli引數t右設定,則僅分隔maxsplit個子字串,
返回切片後的子字串拼接的列表
splitlines([keepends]) 按照'\n'分隔,返回一個包含各行作為元素的列表,如果keepends引數指定,則返回前keepends行
startswith(prefix[,start[,end]]) 檢查字串是否以prefix開頭,是則返回True,否則返回False。start和end引數可以指定範圍檢查,可選
strip([chars]) 刪除字串前邊和後邊所有的空格,chars引數可定製刪除的字串,可選
swapcase() 反轉字串中的大小寫
title() 返回標題化(所有的單詞都是以大寫開始,其餘字母小寫)的字串
translate(table) 按照table的規則(可由str.maketrans('a','b')定製)轉換字串中的字元
upper() 轉換字串中所有的小寫字元為大寫
zfill(width) 返回長度為width的字串,原字串右對齊,前邊用0填充

④ 字串格式化

其實就是format函式的使用而已,使用程式碼示例如下:

# 位置引數
str1 = "{0}生{1},{2}{3}!".format("人""苦短""我用""Python")
print(str1)

# 關鍵字引數
str1 = "{a}生{c},{b}{d}!".format(a="人", c="苦短", b="我用", d="Python")
print(str1)

# 位置引數可以與關鍵字引數一起使用,不過位置引數需要在關鍵字引數前,否則會報錯!
# 另外還有個叫替換域的東西,冒號代表格式化符號開始,比如下面的例子:
str1 = "{0}:{1:.4}".format("圓周率", 3.1415926)
print(str1)
複製程式碼

執行結果如下

人生苦短,我用Python
人生苦短,我用Python
圓周率:3.142
複製程式碼

⑤ 字串前加'r','u'的意義

在字串前加上「r或者R」,代表後面的字串是「原始字串」,即直接按照字面意思使用沒有轉義字元和不能列印的字元。比如print(r'Python\n'),輸出的結果會是:Python\n。而在字串前加上小寫的「u」,代表後面的字串「以Unicode格式進行編碼」,一般用在中文字串前,避免出現中文亂碼問題。


如果本文對你有所幫助,歡迎
留言,點贊,轉發
素質三連,謝謝?~


相關文章