Python 中三引號可以將復(fù)雜的字符串進(jìn)行賦值
Python 三引號允許一個字符串跨多行,字符串中可以包含換行符、制表符以及其他特殊字符
三引號的語法是一對連續(xù)的單引號或者雙引號(通常都是成對的用)
hi = ’‘’hi
there‘’‘
print(hi)
三引號讓程序員從引號和特殊字符串的泥潭里面解脫出來,自始至終保持一小塊字符串的格式(即所見即所得)格式的。
一個典型的用例是,當(dāng)你需要一塊HTML或者SQL時,這時當(dāng)用三引號標(biāo)記,使用傳統(tǒng)的轉(zhuǎn)義字符體系將十分費神
sql = ’‘’
CREATE TABLE u
login VARCHAR(
uid INTEGER,
prid INTEGER)
‘’‘
print(sql)
Unicode 字符串
Python 中定義一個 Unicode 字符串和定義一個普通字符串一樣簡單:
如下, 被替換的 u0020 標(biāo)識表示在給定位置插入編碼值為 0x0020 的 Unicode 字符(空格符)
字符串使用方法詳解
字符串基本特點
字符串的編碼
字符串的創(chuàng)建(單行)
字符串的創(chuàng)建(多行)
空字符串和len()函數(shù)
轉(zhuǎn)移字符 n: 換行 r: 回車 t:橫向制表符 b:退格 \:輸出轉(zhuǎn)義符
字符串拼接 +
字符串復(fù)制 *
不換行打印
從控制臺讀取輸入的字符串 input()
字符串替換 replace()
數(shù)字轉(zhuǎn)字符串 str()
使用[]提取指定索引下的字符
split()分割字符串和join()合并字符串
字符串駐留機(jī)制和字符串比較
字符串比較和同一性
成員操作符判斷子字符串
字符串常用方法匯總
去除首尾信息
大小寫轉(zhuǎn)換
格式排版
字符串特征判斷方法
字符串的格式化
填充與對齊
數(shù)字格式化
可變字符串
上述介紹配套測試代碼
1.字符串基本特點
# Python的字符串是不可變的,但可以將字符串的一部分復(fù)制到新創(chuàng)建的字符串,達(dá)到“看起來修改”的效果。
2.字符串的編碼
# Python3直接支持Unicode,可以表示世界上任何書面語言的字符。Python3的字符默認(rèn)就是16位Unicode編碼,ASCII碼是Unicode編碼的子集。
# 使用內(nèi)置函數(shù)ord()可以把字符轉(zhuǎn)換成對應(yīng)的Unicode碼;
print(ord(”A“))
print(ord(”a“))
print(ord(”明“))
# 使用內(nèi)置函數(shù)chr()可以把十進(jìn)制數(shù)字轉(zhuǎn)換成對應(yīng)的字符。
print(chr(706))
3.引號創(chuàng)建字符串
# 我們可以通過單引號或雙引號創(chuàng)建字符串。 使用兩種引號的好處是可以創(chuàng)建本身就包含引號的字符串,而不用使用轉(zhuǎn)義字符。
a = ”I’m a teacher!“
print(a) # I‘m a teacher!
b = ’my_name is ”TOM“‘
print(b) # my_name is ”TOM“
4.連續(xù)三個單引號或三個雙引號,可以幫助我們創(chuàng)建多行字符串。在長字符串中會保留原始的格式。
c = ’‘’Fake
news
!
‘’‘
print(c)
5.空字符串和len()函數(shù)
# Python允許空字符串的存在,不包含任何字符且長度為0。
print(len(’a‘))
print(len(’‘))
# len()用于計算字符串含有多少字符。
print(len(”天子守國門,君王死社稷“))
6.轉(zhuǎn)義字符
# n: 換行 r: 回車 t:橫向制表符 b:退格 \:輸出轉(zhuǎn)義符
print(”啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊n惺惺惜惺惺嘻嘻嘻嘻嘻嘻嘻r惺惺惜惺惺t想新b寫寫嘻嘻嘻惺惺惜惺惺想新寫寫許許多多的若若若熱\二二“)
7.字符串拼接
# 可以使用 + 將多個字符串拼接起來
a = ’皮爾斯‘ + ’摩根‘
print(a)
# 可以將多個字面字符串直接放到一起實現(xiàn)拼接。
b = ’皮爾斯‘’摩根‘
print(b)
8.字符串復(fù)制
# 使用*可以實現(xiàn)字符串復(fù)制
c = ”MAGA!“ * 3
print(c)
9.不換行打印
# 我們可以通過參數(shù)end = “任意字符串”。實現(xiàn)末尾添加任何內(nèi)容:
print(”唐納德“, end=’ ‘)
print(”特朗普“, end=’##‘)
print(”特離譜“)
10.從控制臺讀取字符串
# 我們可以使用input()從控制臺讀取鍵盤輸入的內(nèi)容。
# myCash = input(”請輸入付款金額“”(若付款, 概不退換): “)
# print(”您的收款金額是: “ + myCash)
11.replace() 實現(xiàn)字符串替換
# 整個過程中,實際上我們是創(chuàng)建了新的字符串對象,并指向了變量a,而不是修改了以前的字符串。
a = ”Mr Trump say: Fake news!“
a = a.replace(”Trump“, ”Trace“)
print(a)
12.str()實現(xiàn)數(shù)字轉(zhuǎn)型字符串
a = str(5.20) # 結(jié)果是:a = ‘5.20’
b = str(3.14e2) # 結(jié)果是:b = ’314.0’
c = str(True) # 結(jié)果是:c = ‘True’
print(a)
print(b)
print(c)
”“”
13.使用[]提取字符
字符串的本質(zhì)就是字符序列,我們可以通過在字符串后面添加[], 在[]里面指定偏移量,可以提取該位置的單個字符。
正向搜索:
最左側(cè)第一個字符,偏移量是0,第二個偏移量是1,以此類推。直到len(str)-1為止。
反向搜索:
最右側(cè)第一個字符,偏移量是-1,倒數(shù)第二個偏移量是-2,以此類推,直到-len(str)為止
“”“
a = ”Ivanka Trump“
# 字符串開頭
print(a[0])
print(a[-len(a)])
# 字符串結(jié)尾
print(a[-1])
print(a[len(a) - 1])
14.字符串切片slice操作
# 切片slice操作可以讓我們快速的提取子字符串。標(biāo)準(zhǔn)格式為 起始偏移量start:終止偏移量end:步長step
# 典型操作(三個量為正數(shù)的情況)如下
a = ”Donald Trump“
print(”[:] 提取整個字符串: “, a[:])
print(”[start:] 從start索引開始到結(jié)尾: “, a[2:])
print(”[:end] 從頭開始知道end-1: “, a[:2])
print(”[start:end] 從start到end-1: “, a[2:4])
print(”[start:end:step] 從start提取到end-1,步長是step: “, a[1:8:2])
# 其他操作(三個量為負(fù)數(shù))的情況:
print(”倒數(shù)三個:“, a[-3:])
print(”倒數(shù)第八個到倒數(shù)第三個(包頭不包尾): “, a[-3:-1])
print(”步長為負(fù),從右到左反向提取: “, a[::-1])
# 切片操作時,起始偏移量和終止偏移量不在[0,字符串長度-1]這個范圍,也不會報錯。起始偏移量小于0則會當(dāng)做0,終止偏移量大于“長 度-1”會被當(dāng)成-1。
print(a[7:100])
15. split()分割和join()合并
# split()可以基于指定分隔符將字符串分隔成多個子字符串(存儲到列表中)。如果不指定分隔符,則默認(rèn)使用空白字符
a = ”Mr Trump say: Fake news!“
print(a.split())
print(a.split(”:“))
# join()的作用和split()作用剛好相反,用于將一系列子字符串連接起來。
b = [’Mr‘, ’Trump‘, ’say:‘, ’Fake‘, ’news!‘]
print(’-‘.join(b))
16. 字符串駐留機(jī)制和字符串比較
# 字符串駐留:常量字符串只保留一份
c = ”dd#“
d = ”dd#“
print(c is d) # True
17. 字符串比較和同一性
# 可以直接使用 == != 對字符串進(jìn)行比較,是否含有相同的字符
# 使用 is not is ,判斷兩個對象是否同一個對象。比較的是對象的地址,即 id(obj1) 是否和 id(obj2) 相等。
a = ”Donald Trump“
b = ”Ivanka Trump“
print(a == b)
print(a is not b)
18. 成員操作符判斷子字符串
# in not in 關(guān)鍵字,判斷某個字符(子字符串)是否存在于字符串中。’
print(”ab“ in ”abcdefg“)
19. 字符串常用方法匯總
a = ‘’‘明太祖朱元璋,朱標(biāo),建文帝朱允炆
明成祖朱棣,明仁宗朱高熾,明宣宗朱瞻基,明英宗朱祁鎮(zhèn),明代宗朱祁玉
明憲宗朱見深,明孝宗朱佑樘,明武宗朱厚照,明睿宗朱祐杬,
明世宗朱厚熜,明穆宗朱載垕,明神宗朱翊鈞,
明光宗朱常洛。明熹宗朱由校,明思宗朱由檢
’‘’
print(len(a))
print(a.startswith(”明太祖“))
print(a.endswith(”朱由檢“))
print(”第一次出現(xiàn)指定字符串的位置: “, a.find(”朱“))
print(”最后一次出現(xiàn)指定字符串的位置“, a.rfind(”朱“)) # 測試為false, 原因待定位
print(”指定字符串出現(xiàn)了幾次: “, a.count(”宗“))
print(”所有字符全是字母或數(shù)字: “, a.isalnum())
20. 去除首尾信息
# 我們可以通過strip()去除字符串首尾指定信息。通過lstrip()去除字符串左邊指定信息,rstrip()去除字符串右邊指定信息。
print(”-abc-“.strip(”-“))
print(”-abc-“.lstrip(”-“))
print(”-abc-“.rstrip(”-“))
21. 大小寫轉(zhuǎn)換
a = ”Mr Trump say: Fake news!“
print(”產(chǎn)生新的字符串,首字母大寫: “, a.capitalize())
print(”產(chǎn)生新的字符串,每個單詞都首字母大寫:“, a.title())
print(”產(chǎn)生新的字符串,所有字符全轉(zhuǎn)成大寫: “, a.upper())
print(”產(chǎn)生新的字符串,所有字符全轉(zhuǎn)成小寫: “, a.lower())
print(”產(chǎn)生新的,所有字母大小寫轉(zhuǎn)換: “, a.swapcase())
22. 格式排版
# center() 、 ljust() 、 rjust() 這三個函數(shù)用于對字符串實現(xiàn)排版。
a = ”asd“
print(a.center(100, ”*“))
print(a.center(100))
print(a.ljust(100, ”*“))
print(a.rjust(100, ”*“))
‘’‘
23. 特征判斷方法
isalnum() 是否為字母或數(shù)字
isalpha() 檢測字符串是否只由字母組成(含漢字)
isdigit() 檢測字符串是否只由數(shù)字組成
isspace()檢測是否為空白符
isupper() 是否為大寫字母
islower() 是否為小寫字母
’‘’
a = ”trump拆那“
print(a.isalnum())
print(a.isalpha())
print(a.isdigit())
print(a.isspace())
print(a.isupper())
print(a.islower())
print(a.isdecimal())
# 24. 字符串的格式化
# format() 基本用法基本語法是通過 {} 和 : 來代替以前的 % 。
# format() 函數(shù)可以接受不限個數(shù)的參數(shù),位置可以不按順序。
a = ”今年是{0}年, 是農(nóng)歷十二生肖中的{1}年“
print(a.format(2022, ”鼠“))
# 我們可以通過{索引}/{參數(shù)名},直接映射參數(shù)值,實現(xiàn)對字符串的格式化,非常方便。
b = ”爸爸的爸爸叫什么? 爸爸的爸爸叫{grandpa}“
print(b.format(grandpa=”爺爺“))
# 25. 填充與對齊
# 填充常跟對齊一起使用
# ^ 、 《 、 》 分別是居中、左對齊、右對齊,后面帶寬度
# : 號后面帶填充的字符,只能是一個字符,不指定的話默認(rèn)是用空格填充
print(”{:*》10}“.format(”testStr“)) # 在十個字符中將字符串居右對齊, 多出的用*補(bǔ)齊
print(”我是{0},{1:w^6}這里你把握不住“.format(”潘長江“, ”嘎子“))
# 26. 數(shù)字格式化
# 浮點數(shù)通過 f ,整數(shù)通過 d 進(jìn)行需要的格式化。
a = ”您的支付寶到賬{:.2f}元, 需還款{:10d}元“
print(a.format(14138.552673, 6))
# 27. 可變字符串
# Python中,字符串屬于不可變對象,不支持原地修改,如果需要修改其中的值,只能創(chuàng)建新的字符串對象。
# 確實需要原地修改字符串,可以使用io.StringIO對象或array模塊
import io
s = ”hello, EVA“
sio = io.StringIO(s) # 可變字符串
print(sio)
v1 = sio.getvalue()
print(”v1:“, v1)
char7 = sio.seek(7) # 指針知道索引7這個位置
sio.write(”O(jiān)nePiece“)
v2 = sio.getvalue()
print(”v2:“, v2)
# 類型轉(zhuǎn)換總結(jié)
# 轉(zhuǎn)換為int
print(‘int()默認(rèn)情況下為:’, int())
print(‘str字符型轉(zhuǎn)換為int:’, int(‘010’))
print(‘float浮點型轉(zhuǎn)換為int:’, int(234.23))
# #十進(jìn)制數(shù)10,對應(yīng)的2進(jìn)制,8進(jìn)制,10進(jìn)制,16進(jìn)制分別是:1010,12,10,0xa
print(‘int(’0xa‘, 16) = ’, int(‘0xa’, 16))
print(‘int(’10‘, 10) = ’, int(‘10’, 10))
print(‘int(’12‘, 8) = ’, int(‘12’, 8))
print(‘int(’1010‘, 2) = ’, int(‘1010’, 2))
# 轉(zhuǎn)換為float
print(‘float()默認(rèn)情況下為:’, float())
print(‘str字符型轉(zhuǎn)換為float:’,
float(‘123.01’))
print(‘int浮點型轉(zhuǎn)換為float:’, float(32))
# 轉(zhuǎn)換為complex
print(‘創(chuàng)建一個復(fù)數(shù)(實部+虛部):’, complex(12, 43))
print(‘創(chuàng)建一個復(fù)數(shù)(實部+虛部):’, complex(12))
# 轉(zhuǎn)換為str字符串
print(‘str()默認(rèn)情況下為:’, str())
print(‘float型轉(zhuǎn)換為str:’, str(232.33))
print(‘int轉(zhuǎn)換為str:’, str(32))
lists = [‘a(chǎn)’, ‘b’, ‘e’, ‘c’, ‘d’, ‘a(chǎn)’]
print(‘列表list轉(zhuǎn)換為str:’, ‘’.join(lists))
# 轉(zhuǎn)換為list
strs = ‘hongten’
print(‘序列strs轉(zhuǎn)換為list:’, list(strs))
# 轉(zhuǎn)換為tuple(元組)
print(‘列表list轉(zhuǎn)換為tuple:’, tuple(lists))
# 字符和整數(shù)之間的轉(zhuǎn)換
print(‘整數(shù)轉(zhuǎn)換為字符chr:’, chr(67))
print(‘字符chr轉(zhuǎn)換為整數(shù):’, ord(‘C’))
print(‘整數(shù)轉(zhuǎn)16進(jìn)制數(shù):’, hex(12))
print(‘整數(shù)轉(zhuǎn)8進(jìn)制數(shù):’, oct(12))
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7085瀏覽量
89228 -
編程
+關(guān)注
關(guān)注
88文章
3628瀏覽量
93823 -
python
+關(guān)注
關(guān)注
56文章
4800瀏覽量
84826
發(fā)布評論請先 登錄
相關(guān)推薦
評論