【Python基礎(chǔ)】3.字符串

本篇筆記知識(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)建完整的消息奸绷。

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ǔ)如下:


字符串-下標(biāo).png

(截圖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

findindex還可以使用下標(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è)分別為:

  1. 原字符串
  2. 替換后的字符串
  3. 替換的次數(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ù)格式化變量的地址


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蠢琳,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蓝牲,更是在濱河造成了極大的恐慌泰讽,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異累澡,居然都是意外死亡永乌,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門圈驼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來望几,“玉大人,你說我怎么就攤上這事靴迫÷ナ模” “怎么了疟羹?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵榄融,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我涎才,道長(zhǎng)力九,這世上最難降的妖魔是什么邑闺? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任检吆,我火速辦了婚禮,結(jié)果婚禮上臂寝,老公的妹妹穿的比我還像新娘咆贬。我一直安慰自己,他們只是感情好皱蹦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布沪哺。 她就那樣靜靜地躺著酌儒,像睡著了一般忌怎。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上孽惰,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天灰瞻,我揣著相機(jī)與錄音辅甥,去河邊找鬼璃弄。 笑死,一個(gè)胖子當(dāng)著我的面吹牛疏咐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播借跪,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掏愁,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼卵牍!你這毒婦竟也來了糊昙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤萝衩,失蹤者是張志新(化名)和其女友劉穎猩谊,沒想到半個(gè)月后镜撩,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體袁梗,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡遮怜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年锯梁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片剥懒。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡初橘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出耕蝉,到底是詐尸還是另有隱情夜只,我是刑警寧澤扔亥,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站推盛,受9級(jí)特大地震影響谦铃,放射性物質(zhì)發(fā)生泄漏驹闰。R本人自食惡果不足惜撒会,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一诵肛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧褪秀,春花似錦媒吗、人聲如沸乙埃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽甫何。三九已至,卻和暖如春遇伞,著一層夾襖步出監(jiān)牢的瞬間辙喂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留加派,地道東北人叫确。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像芍锦,于是被迫代替她去往敵國和親竹勉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子娄琉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 姓名 顧春陽 公司 揚(yáng)州市方圓建筑有限公司 打卡第193天 【知~學(xué)習(xí)】 《六項(xiàng)精進(jìn)》5遍 共639遍 《大學(xué)》5...
    顧春陽閱讀 116評(píng)論 0 0
  • 這幾天覺得好疲憊次乓,可能是最近好久沒有休息了吧,所以給自己放一天的假孽水,不好意思票腰,真的不想寫了。
    阿爾法不過就是個(gè)希臘字母閱讀 306評(píng)論 0 0
  • 當(dāng)你開始討厭一個(gè)人的時(shí)候女气,她做一切事情杏慰,在你看來,都很討厭
    追時(shí)光的人閱讀 106評(píng)論 0 1