內容簡述:
- 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格式進行編碼」,一般用在中文字串前,避免出現中文亂碼問題。
如果本文對你有所幫助,歡迎
留言,點贊,轉發
素質三連,謝謝?~