Python的基本數(shù)據(jù)類型—String

String是一個(gè)Unicode字符序列慢宗,是Python中最重要的數(shù)據(jù)類型之一戒劫,可以使用單引號(hào)、雙引號(hào)婆廊、三引號(hào)創(chuàng)建

創(chuàng)建一個(gè)String

a='1234'
b="hello world"
c='''hello world 1234'''

既然單引號(hào)迅细、雙引號(hào)、三引號(hào)都可以創(chuàng)建字符串,那么他們的區(qū)別在哪呢淘邻?


# 單引號(hào)茵典、雙引號(hào)沒(méi)有太大的區(qū)別
# 但是如果我們想輸出 what's up ? 這樣中間帶有單引號(hào)的字符串時(shí)就要使用雙引號(hào) 
a='hello world'
# 輸出 hello world

b="what's up ?"
# 輸出 what's up ?

# 如果我們輸出一篇文章或者換行的時(shí)候可以試試三引號(hào)
c='''
hello world 
hello world
'''

# 輸出
hello world 
hello world

字符串中的轉(zhuǎn)義字符

如何使用python打印這樣一段字符串'D:Download/note/notebook',使用print()直接能打印出來(lái)嗎?我們來(lái)演示一下

a='D:Download\note\notebook'
print(a)

# 輸出結(jié)果
D:Download
ote
otebook

結(jié)果不僅少了兩個(gè)\n而且還換行了宾舅,這是因?yàn)閈n是轉(zhuǎn)義字符统阿,會(huì)被當(dāng)成換行符。
轉(zhuǎn)義字符在字符串中使用的很廣泛筹我,下面我們通過(guò)代碼了解一下轉(zhuǎn)義字符以及用法

# 我們使用兩種方式打印完整的路徑
a='D:Download\note\notebook'

#  通過(guò)在\n前面添加\
print('D:Download\\note\\notebook')

#  在字符串前添加r或R
print(r'D:Download\note\notebook')

# 讓hello world換行
a='hello world'
print('hello \nworld')


python中支持的轉(zhuǎn)義字符有以下幾種

轉(zhuǎn)義字符 python中輸出
\ \
' '(單引號(hào))
\" "(雙引號(hào))
\a 響鈴(輸出有聲音)
\b 退后一格
\f 換頁(yè)(打印)
\n 換行
\r 回車
\t 橫向制表符
\v 縱向制表符

怎么訪問(wèn)字符串中的字符

可以通過(guò)切片扶平、索引訪問(wèn)字符串中的字符,和大多數(shù)語(yǔ)言一樣蔬蕊,索引是從0開(kāi)始并且必須是整型

我們先來(lái)看看索引的使用方式

a='Hello world,你好 世界'

# 獲取第一個(gè)字符
print(a[0])
# 輸出 H 


# 獲取w
print(a[6])
# 輸出 w 
# 在python中空格也算是一個(gè)字符结澄,所以是索引是6而不是5

# 獲取最后一個(gè)字符串界
print(a[16])

# 這段字符串比較短,你可以數(shù)出來(lái),但是如果是一篇文章呢
# 所以python中還提供了一種簡(jiǎn)單的方式:負(fù)數(shù)
print(a[-1])    # 界
print(a[-2])    # 世

# 注意:通過(guò)索引訪問(wèn)時(shí)麻献,如果索引不存在將會(huì)報(bào)錯(cuò)们妥,如下
print(a[50])

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

通過(guò)上面索引的方式我們可以獲取字符串中的某個(gè)字符,但是如果我們想獲取多個(gè)字符怎么解決呢勉吻?這個(gè)時(shí)候就要使用切片了

a='Hello world,你好 世界'

#  獲取'Hello world'
print(a[0:11])

#  獲取'你好 世界'
print(a[12:17])

#  通過(guò)上面的索引监婶,我們可以嘗試使用切片用負(fù)數(shù)獲取最后一個(gè)字符
#  獲取 '你好 世界'
print(a[-5:]) 

#  和上面類型的寫法還有以下幾種
print(a[:-6])
# 輸出 Hello world
    
print(a[5:])
# 輸出 world,你好 世界        

下面圖可以便于記憶和理解


便于記憶

思考一下:通過(guò)不存在的索引訪問(wèn)字符串會(huì)報(bào)錯(cuò),在切片中范圍不存在齿桃,會(huì)怎么樣呢惑惶?這個(gè)留給大家有空測(cè)試一下

小結(jié):通過(guò)上面幾個(gè)案例,我們可以總結(jié)以下結(jié)論

  • 字符串中的索引從0開(kāi)始
  • 索引和切片中都可以使用負(fù)數(shù)短纵,表示倒數(shù)第幾個(gè)
  • 切片中冒號(hào)前后的數(shù)字可以省略一個(gè)带污,分別表示從頭到...或者從...到結(jié)束

字符串的一些基本操作

  1. 字符串的合并
a='hello'
b='world'

#  合并兩個(gè)字符串
print(a+b)
helloworld

# helloworld中間加空格
print(a+' '+b)

#  輸出10個(gè)hello
print(a+a+a+a+a+a+...)

#  這里我們可以使用乘法,就不用加10次了
print(a*10)
hellohellohellohellohellohellohellohellohellohello

# 上面的結(jié)果可能不是我們想要
# 那問(wèn)題來(lái)了
# 這10個(gè)hello里面如何添加空格或逗號(hào)呢
print((a+' ')*10)
hello hello hello hello hello hello hello hello hello hello

小思考:通過(guò)上面的案例我們知道字符串可以相加踩娘、可以和數(shù)字相乘
那字符串和字符串能相乘嗎?字符串和0相乘又是什么呢喉祭?

a='Hello'
b='World'

print(a*b)
print(a*0)

.
.
.

a*b 
# 會(huì)報(bào)錯(cuò)养渴,告訴我們字符串不能和字符串相乘
TypeError: can't multiply sequence by non-int of type 'str'

a*0
# 輸出 空
# 可以通過(guò)下面兩個(gè)函數(shù)判斷具體輸出內(nèi)容

# 判斷字符串的長(zhǎng)度
print(len(a*0))
0

# 判斷字符串的類型
print(type(a*0))
str

字符串的一些常用方法

in 、not in判斷字符串中是否包含指定的字符

# 判斷 hello 是否存在于hello world
a='hello'
b='hello world'

print(a in b)
# 輸出 True

#  判斷 hello 是否不存在于 hello world
print(a not in b)
# 輸出 False

.capitalize() 首字母轉(zhuǎn)為大寫其他英文字母轉(zhuǎn)為小寫

a='hELLO WORLD 12345'
print(a.capitalize())
# 輸出 Hello world 12345

.swapcase() 大寫轉(zhuǎn)為小寫,小寫轉(zhuǎn)為大寫

a='hELLO world'
print(a.swapcase())
# 輸出 Hello WORLD

.lower() 全部轉(zhuǎn)為小寫

a='hELLO WORLD 12345'
print(a.lower())
#  輸出 hello world 12345

.upper() 全部轉(zhuǎn)為大寫

a='hello World'
print(a.upper())
#  輸出 HELLO WORLD

.title() 每個(gè)單詞的首字母轉(zhuǎn)為大寫

a='this is an apple'
print(a.title())
#  輸出 This Is An Apple

.count() 統(tǒng)計(jì)字符串中字符出現(xiàn)的次數(shù)

#  .count(<sub>[, <start>[, <end>]])

a='Hello worLd'

# 'l'在字符串中出現(xiàn)的次數(shù)
print(a.count('l'))
#  輸出 2   大寫的不會(huì)被統(tǒng)計(jì) 

# 'o'在字符串0-5之前出現(xiàn)的次數(shù)
print(a.count('o',0,5))
# 輸出 1 

.endswith() 判斷字符串是否以某字符結(jié)尾

# .endswith(<sub>[, <start>[, <end>]])

a='Hello world'

# 判斷是否以'world'結(jié)尾
print(a.endswith('world'))
# 輸出 True

# 判斷'Hello' 是否以'w'結(jié)尾
print(a.endswith('w',0,5))

.startswith() 判斷字符串是否以某字符開(kāi)頭

# .startswith (<sub>[, <start>[, <end>]])

a='Hello world'

# 判斷是否以'world'開(kāi)頭
print(a.startswith('world'))
# 輸出 False

# 判斷'Hello' 是否以'H'開(kāi)頭
print(a.startswith('H',0,5))
# 輸出 True

.find() 查找字符串的位置

# find(<sub>[, <start>[, <end>]])

a='Hello world'

# 查找'world'在字符串中的位置
print(a.find('world'))
# 輸出 6

# 如果查找的對(duì)象不存在則返回-1
print(a.find('Worlds'))

# .index()的使用方法和功能類似泛烙,但是.index() 查找不到會(huì)報(bào)錯(cuò)

.center() 給字符串前后添加空格或字符并讓給定字符串居中

a='Hello world'
print(a.center(20))
# 輸出 '    Hello world     '

print(a.center(20,'='))
# 輸出 ====Hello world=====

# 注意給定的長(zhǎng)度必須大于字符串的長(zhǎng)度
print(a.center(5,'='))
# 這樣就沒(méi)有效果

.replace() 替換給定字符

# .replace(<old>, <new>[, <count>])

a='Hello world'
print(a.replace('world','python'))
# 輸出 Hello python

.strip() 刪除前后空格或移除前后給定字符

a='     Hello   world     '

# 刪除前后空格
print(a.strip())
# 輸出 Hello world

# 移除給定字符
print(a.strip('Hd'))
# 輸出 ello worl

關(guān)于字符串轉(zhuǎn)化list和string的相互轉(zhuǎn)化理卑,會(huì)在后面分享

好了,本篇字符串的分享到這里就結(jié)束了蔽氨,關(guān)于字符串的方法還有很多藐唠,不一定要全部記住背會(huì),先大致了解有個(gè)印象鹉究,在日后使用的時(shí)候再去查找宇立,用的多了自然就記住啦

總結(jié):本篇分享知識(shí)點(diǎn)很多,重點(diǎn)掌握字符串的索引和切片使用方法自赔,關(guān)于字符串中的轉(zhuǎn)義字符多多練習(xí)應(yīng)該是沒(méi)什么問(wèn)題妈嘹,python為字符串提供了大量的方法,先大致有個(gè)了解绍妨,可以方便日后查詢

s

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末润脸,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子他去,更是在濱河造成了極大的恐慌毙驯,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件灾测,死亡現(xiàn)場(chǎng)離奇詭異爆价,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門允坚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)魂那,“玉大人,你說(shuō)我怎么就攤上這事稠项⊙难牛” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵展运,是天一觀的道長(zhǎng)活逆。 經(jīng)常有香客問(wèn)我,道長(zhǎng)拗胜,這世上最難降的妖魔是什么蔗候? 我笑而不...
    開(kāi)封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮埂软,結(jié)果婚禮上锈遥,老公的妹妹穿的比我還像新娘。我一直安慰自己勘畔,他們只是感情好所灸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著炫七,像睡著了一般爬立。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上万哪,一...
    開(kāi)封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天侠驯,我揣著相機(jī)與錄音,去河邊找鬼奕巍。 笑死吟策,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的的止。 我是一名探鬼主播踊挠,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼冲杀!你這毒婦竟也來(lái)了效床?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤权谁,失蹤者是張志新(化名)和其女友劉穎剩檀,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體旺芽,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡沪猴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年辐啄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片运嗜。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡壶辜,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出担租,到底是詐尸還是另有隱情砸民,我是刑警寧澤,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布奋救,位于F島的核電站岭参,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏尝艘。R本人自食惡果不足惜演侯,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望背亥。 院中可真熱鬧秒际,春花似錦、人聲如沸狡汉。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)轴猎。三九已至嵌莉,卻和暖如春进萄,著一層夾襖步出監(jiān)牢的瞬間捻脖,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工中鼠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留可婶,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓援雇,卻偏偏與公主長(zhǎng)得像矛渴,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惫搏,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355