本篇筆記知識(shí)點(diǎn):
-修改字符串
字符串:修改大小寫,拼接增加/刪除空白
下標(biāo)&切片
其他字符串常用操作
字符串
字符串:一系列字符屋剑,用來儲(chǔ)存和表現(xiàn)基于文本信息
??在Python中用一對(duì)引號(hào)引起來的都是字符串诗眨,這個(gè)引號(hào)了一是雙引號(hào)'' ''
,單引號(hào)' '
或者三引號(hào)''' '''
巍膘。
修改字符串
修改字符串的大小寫
- Python對(duì)大小寫很敏感峡懈,例如,在儲(chǔ)存用戶姓名的時(shí)候荚恶,如果用不同格式輸入Lina,LINA,LiNa, 系統(tǒng)會(huì)認(rèn)為這是三個(gè)變量磷支,即儲(chǔ)存三個(gè)不同的名字。
- 在實(shí)際應(yīng)用中廓潜,我們無法依靠用戶來提供正確的大小寫善榛,因此我們需要將字符串先轉(zhuǎn)換為我們需要的格式移盆,再存儲(chǔ)它們
- 1.可以使用
.title()
來使字符串里的每個(gè)字節(jié)的首字母大寫。 - 2.可以使用
.upper()
來使字符串里的每個(gè)字母都大寫樱蛤。 - 3.可以使
.lower()
使字符串里的每個(gè)字母都小寫剑鞍。
name = "Liu ka"
print(name)
print (name.title())
print (name.upper())
print (name.lower())
上述代碼運(yùn)行結(jié)果如下:
Liu ka
Liu Ka
LIU KA
liu ka
合并(拼接)字符串
- 一些情況下蚁署,我們可能會(huì)把多個(gè)字符串拼接在一起使用蚂四。
- 例如遂赠,姓和名存在不同的變量里,但是調(diào)用輸出的時(shí)候筷弦,需要他們拼接在一起輸出。
通過拼接爹殊,可使用存儲(chǔ)在變量中的信息來創(chuàng)建完整的消息奸绷。
- 例如遂赠,姓和名存在不同的變量里,但是調(diào)用輸出的時(shí)候筷弦,需要他們拼接在一起輸出。
1. 使用加號(hào)‘+’
來合并字符串号醉。
family_name = "李"
first_name="娜"
print(family_name,first_name)
print(family_name+first_name)
上述代碼運(yùn)行結(jié)果如下:
李 娜
李娜
2. 使用乘號(hào)‘*’
來實(shí)現(xiàn)字符串的疊加效果。
str1 = "=+="
str2 = "bang"
print(str1*4)
print(str2*3)
上述代碼運(yùn)行結(jié)果如下:
=+==+==+==+=
bangbangbang
「注意」不同的數(shù)據(jù)類型是不可以拼接的惰帽,系統(tǒng)會(huì)報(bào)錯(cuò)该酗。
在字符串中添加空白或換行
在編程中士嚎,空白泛指任何非打印字符,如空格爵嗅、制表符和換行符笨蚁。
- 可使用空白來組織輸出括细, 以使其更易讀。
- 要在字符串中添加制表符锉试,可使用
字符組合\t
- 要在字符串中添加換行符呆盖,可使用
字符組合\n
- 可在同一個(gè)字符串中同時(shí)包含制表符和換行符贷笛。
字符串"\n\t"
讓Python換到下一行,并在下一行開頭添加一個(gè)制表符株扛。
print("desk的意思是'桌子'")
print("desk的意思是\t'桌子'")
print("desk的意思是\n'桌子'")
print("desk的意思是\n\t'桌子'")
上述代碼運(yùn)行結(jié)果如下:
desk的意思是'桌子'
desk的意思是 '桌子'
desk的意思是
'桌子'
desk的意思是
'桌子'
刪除空白
?有的看似一樣的字符串席里,因?yàn)榭崭瘢瑫?huì)被認(rèn)定為不同的數(shù)據(jù)改基,有時(shí)候我們需要用到.lstrip()
剔除字符串開頭的空白咖为,或使用.rstrip()
來剔除字符串尾端的空白躁染,也可以使用.strip()
來剔除字符串兩端的空白。
<p></p>
?「注意」這種刪除只是暫時(shí)的我衬,接下來再次詢問這個(gè)字符串所在變量的值時(shí)饰恕,這個(gè)字符串與輸入時(shí)一樣埋嵌,依然包含多余的空白。要永久刪除這個(gè)字符串中的空白范舀,必須將刪除操作的結(jié)果存回到變量中
str = " 兩端有空白需要?jiǎng)h除 "
print(str)
str = " 兩端有空白需要?jiǎng)h除 "
str = str.lstrip()
print(str)
str = " 兩端有空白需要?jiǎng)h除 "
str = str.rstrip()
print(str)
str = " 兩端有空白需要?jiǎng)h除 "
str = str.strip()
print(str)
上述代碼運(yùn)行結(jié)果如下:
兩端有空白需要?jiǎng)h除
兩端有空白需要?jiǎng)h除
兩端有空白需要?jiǎng)h除
兩端有空白需要?jiǎng)h除
下標(biāo)
字符串可以通過str[下標(biāo)]
來進(jìn)行索引和切片锭环。
(字符串捶惜、列表吱七、元組都支持切片操作鹤竭。)
所謂“下標(biāo)”,就是編號(hào)吝岭,就好比超市中的存儲(chǔ)柜的編號(hào)窜管,通過這個(gè)編號(hào)就能找到相應(yīng)的存儲(chǔ)空間
- 下標(biāo)(索引): 就是對(duì)應(yīng)的編號(hào),默認(rèn)python里面下標(biāo)從0開始获搏。
字符串中"下標(biāo)"的使用:
如果有字符串:name = "My name is Mike"失乾,在內(nèi)存中的實(shí)際存儲(chǔ)如下:
(截圖from<編程小白的第一本Python入門書 >)
切片
??切片是指對(duì)操作的對(duì)象截取其中一部分的操作碱茁∨ⅲ可以看作是,在可操作對(duì)象中找出來我們想要的一小截募壕,或者復(fù)制出來一小截我想要的長(zhǎng)度儲(chǔ)存在另外的地方语盈,而不會(huì)對(duì)這個(gè)源文件改動(dòng)刀荒。
切片的語法:[起始:結(jié)束:步長(zhǎng)]
「提醒:」
- 不指定步長(zhǎng)時(shí),默認(rèn)步長(zhǎng)為1
- 結(jié)束位置不包含
- 不指定起始位置時(shí)干毅,默認(rèn)起始位置是0
- -1很特殊表示的最后一個(gè)元素
1.使用切片獲取指定數(shù)據(jù)硝逢,步長(zhǎng)默認(rèn)是1绅喉。
my_str = "Pycharm"
print(my_str[0:3])
運(yùn)行結(jié)果:Pyc
2.快速取前三個(gè)字符 (開始位置不指定默認(rèn)是0)
my_str = "Pycharm"
result = my_str[:3]
print(result)
運(yùn)行結(jié)果:Pyc
3.快速取最后三個(gè)字符
my\_str = "Pycharm"
result = my_str[-3:]
print(result)
運(yùn)行結(jié)果: arm
4.快速獲取整個(gè)字符串
my\_str = "Pycharm"
result = my_str[:] #my\_str[0:5]
運(yùn)行結(jié)果: Pycharm
5.負(fù)數(shù)下標(biāo)
如果用正數(shù)下標(biāo)完成不了的操作使用負(fù)數(shù)下標(biāo)柴罐, -1很特殊表示的最后一個(gè)元素
my_str = "Pycharm"
result = my_str[-2:-5:-1] #負(fù)數(shù)下標(biāo)
print(result)
result = my_str[3:0:-1] #正數(shù)下標(biāo)
print(result)
result = my_str[-2:-6:-1]
print(result)
運(yùn)行結(jié)果如下:
rah
hcy
rahc
6.獲取整個(gè)字符串革屠,然后倒著取每一個(gè)值
my_str = "Pycharm"
result = my_str[::-1]
運(yùn)行結(jié)果如下:mrahcyp
7.根據(jù)切片取值排宰,如果切片范圍不對(duì)++不會(huì)崩潰++板甘,得到空的字符串
my_str = "Pycharm"
result = my_str[3:1:1]
print("xxx:", result,":xxx")
運(yùn)行結(jié)果為:xxx: :xxx
8.根據(jù)下標(biāo)取值如果對(duì)應(yīng)的元素不存在++會(huì)崩潰++.
my_str = "Pycharm"
result = my_str[7]
print(result)
運(yùn)行后報(bào)錯(cuò):
Traceback (most recent call last):
File "/home/python/text.Python", line 2, in <module>
result = my_str[7]
IndexError: string index out of range
不要忘記: 選取的區(qū)間從"起始"位開始虾啦,到"結(jié)束"位的前一位結(jié)束(不包含結(jié)束位本身)痕寓,步長(zhǎng)表示選取間隔.
find
檢測(cè) str 是否包含在 mystr中,如果是返回開始的索引值硬毕,否則返回-1
mystr = 'hello world itcast and itcastcpp'
result1 = mystr.find("world")
print(result1)
result2 = mystr.find("loop")
print(result2)
上述代碼運(yùn)行結(jié)果如下:
6
-1
index
跟find()方法一樣吐咳,只不過如果str不在 mystr中會(huì)報(bào)一個(gè)異常.
根據(jù)內(nèi)容進(jìn)行查找元践,返回一個(gè)下標(biāo)单旁,提示:如果沒有找到則會(huì)崩潰
mystr = 'hello world itcast and itcastcpp'
result1 = mystr.index("world")
print(result1)
result2 = mystr.index("loop")
print(result2)
上述代碼運(yùn)行結(jié)果如下:
6
ValueError: substring not found
find 和index還可以使用下標(biāo)來命令程序在字符串的某一段里查找:
result = my_str.index("l", 0, 3)
print(result)
??指定查找的字符串: "l"
開始位置: 0
結(jié)束位置(不包含): 3
count
統(tǒng)計(jì)字符出現(xiàn)的次數(shù)象浑。
會(huì)返回 str在start和end之間 在 mystr里面出現(xiàn)的次數(shù)
str = "welcome to Python world!"
result = str.count("o")
print(result)
運(yùn)行結(jié)果:4
replace
把 mystr 中的 str1 替換成 str2,如果 count 指定,則替換不超過 count 次.
.replace()
括號(hào)里的三個(gè)分別為:
- 原字符串
- 替換后的字符串
- 替換的次數(shù)篓吁,默認(rèn)-1蚪拦,或者不指定次數(shù)驰贷,表示全部替換
str = "welcome to Python world!"
result = str.count("o")
print(result)
name = "hello world, ha ha!"
result = str.replace('o','x',2)
print(result)
name = "hello world, ha ha!"
result = str.replace('o','x',1)
print(result)
name = "hello world, ha ha!"
result = str.replace('o','x',-1)
print(result)
name = "hello world, ha ha!"
result = str.replace('o','x')
print(result)
上述代碼運(yùn)行結(jié)果如下:
welcxme tx Python world!
welcxme to Python world!
welcxme tx Pythxn wxrld!
welcxme tx Pythxn wxrld!
split
- 指定字符進(jìn)行對(duì)某一串字符串進(jìn)行分割
- 分割次數(shù): 指定1表示分割1次
- 默認(rèn)全部分割: -1
my_str = "哈哈:嘿嘿:嘻嘻"
result = my_str.split(":", 1)
print(result)
上述代碼運(yùn)行結(jié)果如下:
['哈哈', '嘿嘿:嘻嘻']
其他字符串常用操作:
capitalize - 把字符串的第一個(gè)字符大寫
mystr = "city"
reault = mystr.capitalize()
print(reault) #結(jié)果:City
startswith:判斷是否是以指定字符串開始
my_url = "http://www.baidu.com"
result = my_url.startswith("http")
print(result) #結(jié)果: True
endswith - 判斷是否是以指定字符串結(jié)束
my_url = "http://www.baidu.com"
result = my_url.endswith(".cn")
print(result) #結(jié)果:False
just
(1) ljust - 返回一個(gè)原字符串左對(duì)齊,并使用空格填充至長(zhǎng)度 width的新字符串
(2) rjust - 返回一個(gè)原字符串右對(duì)齊,并使用空格填充至長(zhǎng)度 width 的新字符串
(3) center - 返回一個(gè)原字符串居中,并使用空格填充至長(zhǎng)度 width 的新字符串
my_str = "hello"
result = my_str.ljust(10)
print(result)
result = my_str.rjust(10)
print(result)
result = my_str.center(10)
print(result)
上述代碼運(yùn)行結(jié)果如下:
hello
hello
hello
partition - 以指定字符串進(jìn)行分段孩擂,一定會(huì)有三段數(shù)據(jù)箱熬,返回的是一個(gè)元組
my_str = "AABBCC"
result = my_str.partition("BB")
print(result)
上述代碼運(yùn)行結(jié)果如下:
('AA', 'BB', 'CC')
isalpha - 如果字符串里所有字符都是字母 則返回 True,否則返回 False
str = "138138138"
print(str.isalpha())
上述代碼運(yùn)行結(jié)果如下:False
isdigit - 如果字符串只包含數(shù)字則返回 True 否則返回 False.
str = "138138138"
print(str.isdigit())
上述代碼運(yùn)行結(jié)果如下:True
isalnum - 如果字符串里所有字符都是字母或數(shù)字則返回 True,否則返回 False
str = "138138138"
print(str.isalnum())
上述代碼運(yùn)行結(jié)果如下: True
isspace - 如果字符串中只包含空格城须,則返回 True糕伐,否則返回 False.
str = "138138138"
print(str.isspace())
上述代碼運(yùn)行結(jié)果如下:False
join - 在字符串中每個(gè)元素后面插入str,構(gòu)造出一個(gè)新的字符串。
my_str = "ABC"
flag_str = "_"
result = flag_str.join(my_str)
print(result)
上述代碼運(yùn)行結(jié)果如下:A_B_C
rfind - 類似于 find()函數(shù)陪汽,不過是從右邊開始查找
-1:表示沒有找到的標(biāo)記褥蚯,下標(biāo)都是正數(shù)
my_str = "abce"
result = my_str.rfind("d")
print(result)
result = my_str.rfind("c")
print(result)
上述代碼運(yùn)行結(jié)果如下:
-1
2
Python字符串運(yùn)算符
下表實(shí)例變量a值為字符串 "Hello"赞庶,b變量值為 "Python":
操作符 | 描述 | 實(shí)例 |
---|---|---|
+ | 字符串連接 | a + b 輸出結(jié)果: HelloPython |
* | 重復(fù)輸出字符串 | a*2 輸出結(jié)果:HelloHello |
[] | 通過索引獲取字符串中字符 | a[1] 輸出結(jié)果 e |
[ : ] | 截取字符串中的一部分歧强,遵循左閉右開原則,str[0,2] 是不包含第 3 個(gè)字符的肤京。 | a[1:4] 輸出結(jié)果 ell |
in | 成員運(yùn)算符 - 如果字符串中包含給定的字符返回 True | 'H' in a 輸出結(jié)果 True |
not in | 成員運(yùn)算符 - 如果字符串中不包含給定的字符返回 True | 'M' not in a 輸出結(jié)果 True |
r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思來使用蟆沫,沒有轉(zhuǎn)義特殊或不能打印的字符温治。 原始字符串除在字符串的第一個(gè)引號(hào)前加上字母 r(可以大小寫)以外,與普通字符串有著幾乎完全相同的語法舟山。 | print( r'\n' ) |
python字符串格式化符號(hào):
符 號(hào) | 描述 |
---|---|
%c | 格式化字符及其ASCII碼 |
%s | 格式化字符串 |
%d | 格式化整數(shù) |
%u | 格式化無符號(hào)整型 |
%o | 格式化無符號(hào)八進(jìn)制數(shù) |
%x | 格式化無符號(hào)十六進(jìn)制數(shù) |
%X | 格式化無符號(hào)十六進(jìn)制數(shù)(大寫) |
%f | 格式化浮點(diǎn)數(shù)字累盗,可指定小數(shù)點(diǎn)后的精度 |
%e | 用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù) |
%E | 作用同%e突琳,用科學(xué)計(jì)數(shù)法格式化浮點(diǎn)數(shù) |
%g | %f和%e的簡(jiǎn)寫 |
%G | %f 和 %E 的簡(jiǎn)寫 |
%p | 用十六進(jìn)制數(shù)格式化變量的地址 |