2018-08-22day3筆記

認(rèn)識(shí)字符串

1.什么是字符

a. 用單引號(hào)或者雙引號(hào)括起來的字符就是字符傳
例如 :

'yeyu' "葉玉" 'xiaoyezi'     
name='yeyu'
poem="床前明月光"
2.轉(zhuǎn)意字符

說明:python 中沒有字符類型奕删,如果要表示字符戴已,就是用一個(gè)長度是1的字符串表示磕谅,例如:'a','1',
長度:指的是字符串中的個(gè)數(shù)狐蜕,例如: 'abc' 長度是3,'abc 123,你好'長度是:10
a.通過\將一些特殊的字符轉(zhuǎn)換成一個(gè)具有特殊意義的字符鸠澈,就是轉(zhuǎn)義字符

b. 常見的轉(zhuǎn)義字符:

\n --換行
\t --制表符(相當(dāng)于tab  街妗)
\\ --\
\' --'
\"--"

在計(jì)算字符串長度的時(shí)候,轉(zhuǎn)義字符的長度是1

xiaoyezi='123\n456'
print(xiaoyezi)
123
456

yeyu='123,\t456'
print(yeyu)
123,  456

str1 = 'abc\\scd'
print(str1)
abc\scd

str2 = 'abc\'123"abc'
print(str2)
abc'123"abc

str3 = "abc\"123"
print(str3)
abc"123
3.Unicode編碼

a.python中字符的編碼采用的是Unicode編碼

b.Unicode是采用兩個(gè)字節(jié)對(duì)一個(gè)字符進(jìn)行編碼(2^15),能夠?qū)⑹澜缟纤械姆?hào)進(jìn)行編碼

c.Unicode編碼中包含了ascii碼

將數(shù)值轉(zhuǎn)換成對(duì)應(yīng)的符號(hào)的過程就是反編碼(解碼)
0 --> 0
'0' --> 48

# 1).將Unicode碼轉(zhuǎn)換成字符: chr(編碼)
print(chr(0xA001))
print(chr(0xAC00))
print(chr(0x4e60))

# 2).將字符轉(zhuǎn)換成Unicode編碼: ord(字符)
code1 = ord('余')  # 結(jié)果是10進(jìn)制的
code2 = ord('婷')
print(hex(code1), hex(code2))

字符串實(shí)質(zhì)可以是一個(gè)不可變的序列,序列內(nèi)容是字符涵妥。
一旦字符串確定乖菱,那么里面的字符和字符的位置就不可變了,例如:'abc'

1.怎么獲取單個(gè)字符

'''
python中的字符串蓬网,可以通過下標(biāo)(索引)來獲取指定位置上的字符:字符串[索引]
說明:
a.字符串:可以是字符串值窒所,也可以是字符串變量
b.[]: 中括號(hào)使固定語法
c.索引:從0開始到字符串長度減1 (0對(duì)應(yīng)第一個(gè)字符);
-1 ~ -長度(-1對(duì)應(yīng)的是最后一個(gè)字符, -2對(duì)應(yīng)的是倒數(shù)第2個(gè)字符)

注意:索引不能越界拳缠,否則會(huì)報(bào)錯(cuò)(產(chǎn)生異常)
str1 = 'acbd' # a->0, c->1, b->2, d->3
print(str1[0])
print(str1[4]) IndexError: string index out of range
name = '王海飛'
print(name[1])
print(name[-1], name[-2], name[-3])
print('abc'[2])
print(name[-4]) # IndexError: string index out of range

  1. 獲取部分字符(獲取子串) -- 切片
    字符串[下標(biāo)1:下標(biāo)2] : 從下標(biāo)1開始墩新,獲取到下標(biāo)2前的所有的字符(從下標(biāo)1開始贸弥,每次下標(biāo)值加1窟坐,一直加到下標(biāo)2前)
注意:下標(biāo)1對(duì)應(yīng)的位置,一定要在下標(biāo)2對(duì)應(yīng)的位置前

str2 = 'hello world'

print(str2[0:4]) # hell
print(str2[2:7]) # llo w
print(str2[2:-1]) # llo worl
print(str2[3:12]) # 切片時(shí)下標(biāo)可以越界绵疲,越界的時(shí)候就取臨界值
print(str2[-5:-2])
print(str2[-5:9])
字符串[下標(biāo)1:下標(biāo)2:步進(jìn)]
從下標(biāo)1開始獲取哲鸳,每次下標(biāo)值增加步進(jìn)值,沒增加一次取一個(gè)字符盔憨,直到取到下標(biāo)2前為止
注意:a.步進(jìn)如果是正數(shù)徙菠,那么下標(biāo)1對(duì)應(yīng)的字符的位置一定要下標(biāo)2對(duì)應(yīng)的位置的前面;
步進(jìn)是負(fù)數(shù)郁岩,那么下標(biāo)1對(duì)應(yīng)的位置一定要在下標(biāo)2對(duì)應(yīng)的位置的后面
b.下標(biāo)2對(duì)應(yīng)字符是取不到的
str3 = 'helloPython'
print(str3[0:5:2]) # hlo 步進(jìn):3 hl
print(str3[-1:5:-1]) # nohty

下標(biāo)的省略

切片的時(shí)候婿奔,下標(biāo)1和下標(biāo)2是可以省略的

下標(biāo)1省略:默認(rèn)從開頭開始獲取(開頭可能是字符串的第一個(gè)字符,也可能是字符串的最后一個(gè)字符)

"""
str4 = 'good good study,day day up'
print(str4[:4])
print(str4[:4:-1])

"""
下標(biāo)2省略: 從下標(biāo)1位置開始獲取问慎,獲取到結(jié)束(結(jié)束可能是字符串的最后一個(gè)字符萍摊,也可能是字符串的第一個(gè)字符)
"""
print(str4[1:])
print(str4[3::-1])

print(str4[:]) # good good study,day day up
print(str4[::-1]) # pu yad yad,yduts doog doog

練習(xí):要求將一個(gè)字符串中所有下標(biāo)是奇數(shù)位上的字符獲取出來

str5 = 'abcdefgh'
print(str5[1::2]) # 1. + 運(yùn)算符
"""
字符串1+字符串2:
python支持兩個(gè)字符串相加, 其效果就是將兩個(gè)字符串拼接在一起產(chǎn)生一個(gè)新的字符串

注意:如果+的一邊是字符串,那么另外一個(gè)也必須是字符串
"""
print('abc'+'123')
str1 = 'world'
newstr = 'hello' + ' ' + str1
print(newstr)

print(10+'abc') # TypeError: unsupported operand type(s) for +: 'int' and 'str'

2. * 運(yùn)算符

"""
字符串1整數(shù): 字符串重復(fù)多次
"""
print('abc'
3)

3. 所有的比較運(yùn)算符

str1 = 'abc'
print('abc' == str1)
print(str1 != 'ab')

比較大小

"""
str1 > str2; str1 < str2
讓str1中的每一位的字符如叼,分別和str2中每一位的字符依次比較冰木。
直到不同為止,再看不同字符中誰的編碼值大或者小
"""
print('dbcd' > 'abcde')
print('二' > '余婷')
print(ord('二'), ord('余'))

4.in 和 not in

"""
str1 in str2: 判斷str1是否在str2中(str2是否包含str1 / str1是否是str2的子串)

結(jié)果是布爾值
"""
print('abc' in 'a1b2cdefg')
print('f' not in 'python')

5.獲取字符串長度

字符串的長度,指的是字符串中字符的個(gè)數(shù)

len()內(nèi)置函數(shù)

str3 = 'project'
print(len(str3), len('abc 123\n'))

補(bǔ)充:空串

str4 = ''
str5 = ""
print(len(str5))

len1 = len(str3) # len1 = 7
index = len1 - 1 # 6
print(str3[-1], str3[index])

6.阻止轉(zhuǎn)義

在字符串的最前面添加r/R可以阻止轉(zhuǎn)義

print('a\nb','a\nb\')
print(len('a\nb\')) # 4

print(r'a\nb',R'a\nb\')
print(len(r'a\nb\')) # 6

print('a\nb\\') # a\nb\
print('\\n\') # \換行\(zhòng)

print(r'\\n\') # \\n\

練習(xí)

str1 = r'\nabc123' 求:str1[3] b

str2 = 'abc123\123' 求: str2[-5] 3

python為字符串提供了很多的內(nèi)建函數(shù)

字符串.函數(shù)()

注意:這些所有的函數(shù)的功能都不會(huì)影響原來的字符串踊沸,而是產(chǎn)生一個(gè)新的字符串

str1 = 'hello python'

1.capitalize() 將字符串的第一個(gè)字符轉(zhuǎn)換為大寫

newstr = str1.capitalize()
print(newstr, str1)

print('abc'.capitalize())

2.center(width, fillchar)

讓字符串變成width對(duì)應(yīng)的長度歇终,原內(nèi)容居中,剩余的部分使用fillchar的值來填充

witdh - 整數(shù)逼龟; fillchar - 任意字符

print('abc'.center(10, '*')) # ***abc****

3. rjust(width, fillchar)

讓字符串變成width對(duì)應(yīng)的長度评凝,原內(nèi)容靠右,剩余的部分使用fillchar的值來填充

2015103001 2015103002 2015103015

1 2 3 4 5 11 20 ----> 001 002 003 010 011 012

1 --> 0001 11 -> 0011 123 -> 0123

number = '12'
new_id = number.rjust(4, '0')
print(new_id)

3.原字符串.count(str)

判斷str值在原字符串中出現(xiàn)的次數(shù)

str -> 字符串

print('abcabaa'.count('ab'))

print('貳1壹二2一'.isnumeric())

4.str1.join(str2)

在str2中的每個(gè)字符串之間插入一個(gè)str1

print('-+'.join('abc'))

5.str1.replace(old, new)

將str1中old全部替換成new

new_str = 'abcdahulapuyeahj'.replace('a','+')
print(new_str)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腺律,一起剝皮案震驚了整個(gè)濱河市肥哎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌疾渣,老刑警劉巖篡诽,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異榴捡,居然都是意外死亡杈女,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門吊圾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來达椰,“玉大人,你說我怎么就攤上這事项乒ⅲ” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵檀何,是天一觀的道長蝇裤。 經(jīng)常有香客問我,道長频鉴,這世上最難降的妖魔是什么栓辜? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮垛孔,結(jié)果婚禮上藕甩,老公的妹妹穿的比我還像新娘。我一直安慰自己周荐,他們只是感情好狭莱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著概作,像睡著了一般腋妙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仆嗦,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天辉阶,我揣著相機(jī)與錄音,去河邊找鬼。 笑死谆甜,一個(gè)胖子當(dāng)著我的面吹牛垃僚,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播规辱,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼谆棺,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了罕袋?” 一聲冷哼從身側(cè)響起改淑,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浴讯,沒想到半個(gè)月后朵夏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡榆纽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年仰猖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奈籽。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡饥侵,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衣屏,到底是詐尸還是另有隱情躏升,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布狼忱,位于F島的核電站膨疏,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏藕赞。R本人自食惡果不足惜成肘,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望斧蜕。 院中可真熱鬧,春花似錦砚偶、人聲如沸批销。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽均芽。三九已至,卻和暖如春单鹿,著一層夾襖步出監(jiān)牢的瞬間掀宋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留劲妙,地道東北人湃鹊。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像镣奋,于是被迫代替她去往敵國和親币呵。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355