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é)束
字符串的一些基本操作
- 字符串的合并
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