day3字符串

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

1.什么是字符串

a.用單引號(hào)或者雙引號(hào)括起來(lái)的字符集就是字符串
'assd123~..?按鍵式','98k!'
b.字符串中的每個(gè)單獨(dú)的單元叫字符魁瞪,用鍵盤輸入的济舆,都是字符涩嚣。
’98k!'中的‘9’赃梧,‘8’,‘k’,‘!’就是字符

2.轉(zhuǎn)義字符

  • 說明:python中沒有字符類型墩虹,如果要表示字符嘱巾,就用一個(gè)長(zhǎng)度是一的字符串表示,例如:'a','1'
  • 長(zhǎng)度:指的是字符串中字符的個(gè)數(shù)诫钓,例如:’abc‘表示長(zhǎng)度是3旬昭,'123, 你好'表示長(zhǎng)度是7(一個(gè)空格,一個(gè)tab菌湃,都表示一個(gè)字符)
    a.常見的轉(zhuǎn)義字符:
    \n-----換行
    \t------制表符(相當(dāng)于tab)
    \------,隔開
    '------ '
    "----- "
    在計(jì)算字符串長(zhǎng)度的時(shí)候问拘,轉(zhuǎn)義字符的長(zhǎng)度是1
poem = '床前明月光,\n疑是地上霜'
print (poem)

輸出
床前明月光,
疑是地上霜
st = '12\'25'
print (str)

輸出
12'25

3.Unicode編碼

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

  • 將字符轉(zhuǎn)換成指定的數(shù)值骤坐,這個(gè)過程就是編碼绪杏。(編碼的目的是方便計(jì)算機(jī)存儲(chǔ)),將數(shù)值轉(zhuǎn)換成對(duì)應(yīng)的符號(hào)的過程就是反編碼(解碼)

1).將Unicode碼轉(zhuǎn)換成字符:chr(編碼)

print(chr(0xA48F))        ?
print(chr(0x4e80))        亀

2).將字符轉(zhuǎn)換成Unicode編碼:ord(字符)

name1 = '陳'
name2 = '虹'   
name3 = '州'
print(ord(name1),ord(name2),ord(name3)) 

輸出
38472 34425 24030

二纽绍、獲取字符

  • 字符串實(shí)質(zhì)是一個(gè)不可變的序列蕾久,序列內(nèi)容是字符。一旦確定字符串拌夏,那么里面的字符和字符位置就不可變了腔彰,例如:'abc'

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

  • python中的字符串,可以通過下標(biāo)(索引)來(lái)獲取指定位置上的字符:字符串[索引]
    說明:
    a.字符串:可以是字符串值辖佣,也可以是字符串變量
    b.[]:中括號(hào)是固定語(yǔ)法
    c.索引:從0開始到字符串長(zhǎng)度減1;
    -1~負(fù)的長(zhǎng)度(-1對(duì)應(yīng)的是最后一個(gè)字符搓逾,-2對(duì)應(yīng)的是倒數(shù)第二個(gè)字符)
  • 注意:索引不能越界卷谈,否則會(huì)報(bào)錯(cuò)(產(chǎn)生異常)
str = 'abcd'   # a-->0,b-->1c-->2,d-->3
print(str[0])                  a

name = '123'   
print (name[2])                3
print (name[-3])               1
print ('123'[2])               3

2.獲取部分字符(獲取字串) --- 切片

a.字符串[下標(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)的位置前
str1 = 'hello world'
print (str1[0:4])        hell
print (str1[2:7])        llo w
print (str1[2:-1])       llo worl
print (str1[0:13])      切片時(shí)小標(biāo)可以越界朗兵,越界的時(shí)候就去臨界值 
b.字符串[下標(biāo)1:下標(biāo)2:步進(jìn)]:

從下標(biāo)1開始獲取 污淋,每次下標(biāo)值增加步進(jìn)值,每增加一次取一個(gè)字符余掖,直到取到下標(biāo)2為止

  • 注意:1).步進(jìn)如果是正數(shù)寸爆,那么下標(biāo)1對(duì)應(yīng)的字符的位置一定要在下標(biāo)2對(duì)應(yīng)的位置的前面;
    2).步進(jìn)如果是負(fù)數(shù)盐欺,那么下標(biāo)1字符對(duì)應(yīng)的位置一定要在下標(biāo)2字符對(duì)應(yīng)位置的后面
  • 下標(biāo)2對(duì)應(yīng)的字符是取不到的
str2 = 'hellopython'
print (str2[0:5:2])   # hlo
print (str2[-1:5:-2]) # nhy  

c.下標(biāo)的省略
切片的時(shí)候赁豆,下標(biāo)1和下標(biāo)2是可以省略的

  • 下標(biāo)1省略:默認(rèn)從開頭開始獲取(開頭可能是字符串的第一個(gè)字符冗美,也可能是字符串的最后一個(gè)字符
str3 = 'good good study,day day up'
print (str3[:4])              good
print (str3[:4:-1])           pu yad yad,yduts doog
  • 下標(biāo)2省略:從下標(biāo)1位置開始獲取魔种,獲取到結(jié)束(結(jié)束可能是字符串的最后一個(gè)字符,也可能是第一個(gè)字符)
print (str3[1:])                ood good study,day day up
print (str3[3::-1])             doog
print (str3[:])                 good good study,day day up
print (str3[::-1])              pu yad yad,yduts doog doog

練習(xí):要求講一個(gè)字符串中所有下標(biāo)是奇數(shù)位上的字符取出來(lái)(位數(shù)從0開始算)

str4 = '0123456789'
print (str4[1::2])               13579
print (str4[::-2])               97531

三粉洼、字符串的相關(guān)運(yùn)算

1. + 運(yùn)算符

python支持兩個(gè)字符串的相加节预,其效果就是將兩個(gè)字符串拼接在一起,產(chǎn)生一個(gè)新的字符串

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

print(10 + 'abc') TyperError:unsupported operand typ(s) for +:'int'

2.* 運(yùn)算

字符串*整數(shù):字符串重復(fù)多次
print ('abc'*2) abcabc

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

str1 = 'abc'
print ( 'abc' == str1)
print (str1 != 'ab')
  • 比較大小
    str1 > str2;str1 < str2
    讓str1中的每一位的字符安拟,分別和str2中的每一位字符依次比較。直到不同為止挫剑,再看不同字符中誰(shuí)的編碼值大或者小
print ('abcd' > 'abcde')
print ('陳' > '虹') 
print (ord('陳'),ord('虹'))

4.in 和 not in

str1 in str2:判斷str1是否在str2中(str2是否包含str1 / str1是否是str2的字串)
結(jié)果是 布爾值

print('abc' in 'abcdef')
print ('a' not in 'bcd')

5.獲取字符串的長(zhǎng)度

字符串的長(zhǎng)度:指的是字符串中字符的個(gè)數(shù)

  • len()內(nèi)置函數(shù)
str3 = 'project'
print (len(str3),len('abc 123\n'))     7 8
  • 補(bǔ)充:空串
str4 = '  '
str5 = "  "
print (len(str4))       0
print (str3[-1],str3[len(str3)-1])        t  t

6.阻止轉(zhuǎn)義

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

print ('a\nb')      a
                    b
print (r'a\nb')    a\nb
print ('\\\n\\')   \換行\(zhòng)
  • 練習(xí)
 str7 = r'\nabc123'  求 str7[3]                  b
 str8 = 'abc123\\123'  求: str8[-5]             3

四去扣、字符串相關(guān)的方法

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

  • 字符串.函數(shù)( )
  • 注意:這些所有的函數(shù)的功能都不會(huì)影響原來(lái)字符串,而是產(chǎn)生一個(gè)新的字符串
    str = 'hello python'
1.capitalize() 將字符串的第一個(gè)字符轉(zhuǎn)換為大寫
newstr = str.capitalize()
print (newstr)      Hello python
2.center(width,fillchar)

讓字符串變成width對(duì)應(yīng)的長(zhǎng)度,原內(nèi)容居中愉棱,剩余的部分使用fillchar的值來(lái)填充
print ('abc'.center(8,'.')) ..abc...

3.rjust(width,fillchar)

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

num = '1'
new_num = num.rjust(3,'0')
print (new_num)        001
3.原字符串.count(str)

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

str1 = '12121212'
print (str1.count('1'))     4
4.字符串1.join(字符串2)

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

print ('aa'.join('0000'))           0aa0aa0aa0
5.str1.replace(old,new)

將str1中old部分全部替換成new

new_str = 'abcdefsa'.replace('a','?')
print (new_str)            ?bcdefs?

五奔滑、python的字符串內(nèi)建函數(shù)

1 .capitalize():將字符串的第一個(gè)字符轉(zhuǎn)換為大寫
str1 = 'teacher'
print (str1.capitalize())                Teacher
2 .center(width, fillchar):返回一個(gè)指定的寬度 width 居中的字符串艾岂,fillchar 為填充的字符,默認(rèn)為空格朋其。
num = '123'
print (num.center(8,'*'))                **123***
3 .count(str, beg= 0,end=len(string)):返回 str 在 string 里面出現(xiàn)的次數(shù)王浴,如果 beg 或者 end 指定則返回指定范圍內(nèi) str 出現(xiàn)的次數(shù)
print ('12332112'.count('1'))            3
10 .isalnum():如果字符串至少有一個(gè)字符并且所有字符都是字母或數(shù)字則返 回 True,否則返回 False
print ('12335abcd'.isalnum())            True
print ('.........'.isalnum())            false
11 .isalpha():如果字符串至少有一個(gè)字符并且所有字符都是字母則返回 True, 否則返回 False
print ('abcde'.isalpha())                True
print ('zxc12..'.isalpha())              False

12 .isdigit():如果字符串只包含數(shù)字則返回 True 否則返回 False
print ('13450'.isdigit()) True

13 .islower():如果字符串中包含至少一個(gè)區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫梅猿,則返回 True氓辣,否則返回 False
print ('Teacher'.islower())              False
14 .isnumeric():如果字符串中只包含數(shù)字字符,則返回 True袱蚓,否則返回 False
print ('132154a'.isnumeric())            False
15 .isspace():如果字符串中只包含空白钞啸,則返回 True,否則返回 False.
print ('  1 1 2 1'.isspace())            False
16 .istitle():如果字符串是標(biāo)題化的(見 title())則返回 True喇潘,否則返回 False
print ('Two'.istitle())                  True
17 .isupper():如果字符串中包含至少一個(gè)區(qū)分大小寫的字符体斩,并且所有這些(區(qū)分大小寫的)字符都是大寫,則返回 True颖低,否則返回 False
print ('TWO'.isupper())                  True
18 .join(seq):以指定字符串作為分隔符絮吵,將 seq 中所有的元素(的字符串表示)合并為一個(gè)新的字符串
print('00'.join('111'))                  1001001
19 .len(string):返回字符串長(zhǎng)度
print (len('123321123456789'))           15  
20 .ljust(width[, fillchar]):返回一個(gè)原字符串左對(duì)齊,并使用 fillchar 填充至長(zhǎng)度 width 的新字符串,fillchar 默認(rèn)為空格忱屑。
print ('123'.ljust(8,'*'))               123*****
21 .lower():轉(zhuǎn)換字符串中所有大寫字符為小寫.
print ('TEACHER'.lower())                teacher
22 .lstrip():截掉字符串左邊的空格或指定字符
print ('    123'.lstrip())               123
print ('*****123'.lstrip('*'))           123
23 .maketrans():創(chuàng)建字符映射的轉(zhuǎn)換表蹬敲,對(duì)于接受兩個(gè)參數(shù)的最簡(jiǎn)單的調(diào)用方式,第一個(gè)參數(shù)是字符串想幻,表示需要轉(zhuǎn)換的字符粱栖,第二個(gè)參數(shù)也是字符串表示轉(zhuǎn)換的目標(biāo)。
print ('123'.maketrans('abc','789'))
29 .rjust(width,[, fillchar]):返回一個(gè)原字符串右對(duì)齊,并使用fillchar(默認(rèn)空格)填充至長(zhǎng)度 width 的新字符串
print ('123'.rjust(8,'*'))                 *****123
30 .rstrip():刪除字符串字符串末尾的空格.
print ('123******'.rstrip('*'))            123 
34 .strip():在字符串上執(zhí)行 lstrip()和 rstrip()
print ('***123***'.strip())
35 .swapcase():將字符串中大寫轉(zhuǎn)換為小寫脏毯,小寫轉(zhuǎn)換為大寫 (和upper()作用一樣)
print ('ASD'.swapcase())                    asd
print ('zxc'.swapcase())                    ZXC
36 .title():返回"標(biāo)題化"的字符串,就是說所有單詞都是以大寫開始闹究,其余字母均為小寫(見 istitle())
print ('teacher is good'.title())           Teacher Is Good
38 .upper():轉(zhuǎn)換字符串中的小寫字母為大寫
print ('asd'.upper())                       ASD
39 .zfill (width):返回長(zhǎng)度為 width 的字符串,原字符串右對(duì)齊食店,前面填充0
print ('123'.zfill(8))                      00000123
40 .isdecimal():檢查字符串是否只包含十進(jìn)制字符渣淤,如果是返回 true,否則返回 false
print ('1852asf'.isdecimal())               False
print ('124523'.isdecimal())                True
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末价认,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子自娩,更是在濱河造成了極大的恐慌用踩,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異脐彩,居然都是意外死亡碎乃,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門惠奸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)梅誓,“玉大人,你說我怎么就攤上這事佛南」j” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵嗅回,是天一觀的道長(zhǎng)及穗。 經(jīng)常有香客問我,道長(zhǎng)绵载,這世上最難降的妖魔是什么拥坛? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮尘分,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丸氛。我一直安慰自己培愁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布缓窜。 她就那樣靜靜地躺著定续,像睡著了一般。 火紅的嫁衣襯著肌膚如雪禾锤。 梳的紋絲不亂的頭發(fā)上私股,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天,我揣著相機(jī)與錄音恩掷,去河邊找鬼倡鲸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛黄娘,可吹牛的內(nèi)容都是我干的峭状。 我是一名探鬼主播,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼逼争,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼优床!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起誓焦,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤胆敞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體移层,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡仍翰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了幽钢。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歉备。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖匪燕,靈堂內(nèi)的尸體忽然破棺而出蕾羊,到底是詐尸還是另有隱情,我是刑警寧澤帽驯,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布龟再,位于F島的核電站,受9級(jí)特大地震影響尼变,放射性物質(zhì)發(fā)生泄漏利凑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一嫌术、第九天 我趴在偏房一處隱蔽的房頂上張望哀澈。 院中可真熱鬧,春花似錦度气、人聲如沸割按。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)适荣。三九已至,卻和暖如春院领,著一層夾襖步出監(jiān)牢的瞬間弛矛,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工比然, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留丈氓,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓强法,卻偏偏與公主長(zhǎng)得像扒寄,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拟烫,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

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

  • 一.什么是字符串 a.使用單引號(hào)或者雙引號(hào)括起來(lái)的字符集就是字符串该编。b.引號(hào)中單獨(dú)的符號(hào)、數(shù)字硕淑、字母等叫做字符课竣。c...
    舊時(shí)初_2e8d閱讀 329評(píng)論 0 4
  • 1.什么是字符串 a.使用單引號(hào)或者雙引號(hào)括起來(lái)的字符集就是字符串b.引號(hào)中單獨(dú)的符號(hào)嘉赎、數(shù)字、字母等叫做字符c.轉(zhuǎn)...
    zzzsssr閱讀 349評(píng)論 0 2
  • 1.數(shù)據(jù)存儲(chǔ)形式 計(jì)算機(jī)以二進(jìn)制的形式存儲(chǔ) (1).原碼:數(shù)據(jù)的二進(jìn)制形式 10 --> 1010 原碼:0000...
    Deathfeeling閱讀 350評(píng)論 0 3
  • 一于樟、認(rèn)識(shí)字符串 1.什么是字符串 a.用單引號(hào)或者雙引號(hào)括起來(lái)的字符集就是字符串b.字符串中每個(gè)獨(dú)立的單元我們叫字...
    貓愛老鼠丶閱讀 98評(píng)論 0 0
  • 早一分 晚一分 早晚一分 今早晚 一企業(yè)員工公条,個(gè)別上班晚來(lái)一兩,三五分鐘迂曲,為警示而作靶橱。 2017年4月6日
    貫華閱讀 180評(píng)論 0 3