day6總結(jié):字符串(2019-04-22)

1. 字符串(str)

  • 字符串是python提供的容器型數(shù)據(jù)類型(序列),不可變、有序
  • 不可變:不支持增刪改;有序:支持下標操作
  • python中的字符串是用單引號或者雙引號引起來的字符集;引號里面的每個基本單元叫字符

2. 字符

  • python中只有字符概念,沒有字符類型

1)普通字符

  • 數(shù)字、字母、普通符號、中文、日語等

2)轉(zhuǎn)義字符:

  • 在特定的符號前加 \ 來表示特殊功能或者特殊意義的字符
  • \n :換行(相當于回車鍵)
  • \ ' :單引號本身(不是字符串開頭/結(jié)尾標志)
  • \ " :雙引號本身(不是字符串開頭/結(jié)尾標志)
  • \ \ :反斜杠本身(讓一個反斜杠失去轉(zhuǎn)義的功能)
  • \t :制表符(相當于tab鍵)
  • 阻止轉(zhuǎn)義:在字符串的最前面加r/R,能夠阻止字符串中所有的轉(zhuǎn)義字符轉(zhuǎn)義
str4 = R'\thow\nare\nyou\"'
print(str4)        # \thow\nare\nyou\"

3)編碼字符:

  • 在字符串中用 ' \u四位的十六進制數(shù) ' 來表示一個字符
  • \u字符編碼值的16進制數(shù)
str5 = '123\u4e11'
print(str5)          # 123丑

3.1)字符編碼:

  • 計算機本身只有直接存儲數(shù)字的能力(存數(shù)字的二進制的補碼),為了能夠存儲數(shù)字以外的符號,開發(fā)人員給每個字符對應(yīng)一個固定的數(shù)字用來對字符進行存儲。
  • 每個字符對應(yīng)的固定的數(shù)字就是字符的編碼值;每個字符和數(shù)字的一一對應(yīng)關(guān)系就是字符編碼表;常見的編碼表有:ASCII編碼表、Unicode編碼表
  • ASCII碼表采用一個字節(jié)對字符進行編碼:0-127
  • Unicode編碼表采用2個字節(jié)對字符進行編碼,包含了ASCII碼(python用的Unicode編碼表)
  • 拓展:中文Unicode編碼范圍 4E00-9FA5:CJK 統(tǒng)一表意符號 (CJK Unified Ideographs)

3.2)chr函數(shù):

  • chr(編碼值):獲取編碼值對應(yīng)的字符

3.3)ord函數(shù):

  • ord(字符):獲取指定字符對應(yīng)的編碼
# 練習(xí):查看日語的所有片假名

for code in range(0x4dc0, 0x4dff):
    print(chr(code))

3. 字符操作:查

1)獲取單個字符

  • 語法:字符串[下標] ------ 獲取指定下標對應(yīng)的字符
  • 說明:
    字符串 ----- 結(jié)果是字符串的表達式(字符串值、字符串變量、運算結(jié)果是字符串)
    [ ] ----------- 固定寫法
    下標 -------- 又叫索引,值是整數(shù);字符串確定后,字符串中的每一個字符都有一個確定的下標 / 索引表示這個字符在字符串中的位值
    ?????python中下標有兩種:位置從前往后是 0~字符串長度-1;位置從后往前是 -1 ~ - 字符串長度
  • 注意:獲取單個字符的時候下標不能越界

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

  • 語法:字符串[開始下標:結(jié)束下標:步長] ---- 從開始下標開始獲取,每次增加步長取下一個值,取到結(jié)束下標前為止(結(jié)束下標對應(yīng)的值取不到)
  • 說明:
    字符串 ----------- 結(jié)果是字符串的表達式(字符串值、字符串變量、運算結(jié)果是字符串)
    [ ] ------------------ 固定寫法
    開始下標 -------- 下標,整數(shù);能取到對應(yīng)的字符
    結(jié)束下標 -------- 下標,整數(shù);對應(yīng)的字符取不到
    步長 -------------- 整數(shù)。如果步長是正數(shù),從前往后取;如果步長是負數(shù),從后往前取
  • 注意:
    a. 字符串切片的結(jié)果都是字符串
    b. 如果步長是正數(shù),那么開始下標對應(yīng)字符要在結(jié)束下標對應(yīng)字符的前面,才能取到值;如果步長是負數(shù),那么開始下標對應(yīng)字符要在結(jié)束下標對應(yīng)字符的后面,才能取到值
    c. 切片的時候下標可以越界

3)獲取部分字符的簡寫

  • 省略步長:步長為1的時候可以省略不寫 ----- 字符串[開始下標:結(jié)束下標] 即 字符串[開始下標:結(jié)束下標:1]
  • 省略開始下標:步長為正從字符串開頭往后獲取;步長為負從字符串最后往前獲取 ------ 字符串[:結(jié)束下標:步長]字符串[:結(jié)束下標]
  • 省略結(jié)束下標:步長為正,取到字符串最后一個字符為止;步長為負,取到第一個字符為止 ----- 字符串[開始下標::步長]字符串[開始下標:]
# 字符串倒序
str4 = 'hello world'
print(str4[::-1])  # dlrow olleh

4.遍歷字符串

  • 將字符串中的字符一個一個的取出來
for 變量 in 字符串:
    循環(huán)體
  • 直接遍歷,變量取到的就是字符
str4 = 'hello world'
for char in str4:
    print(char)
  • 間接遍歷,通過遍歷下標遍歷字符
str4 = 'hello world'
for index in range(11):
    print(str4[index])

for index in range(-1, -11, -1):
    print(index, str4[index])
  • 練習(xí):統(tǒng)計輸入的字符串中,字母'a'出現(xiàn)的次數(shù)
value = input('請輸入一個字符串:')
count = 0
for char in value:
    if char == 'a':
        count += 1
print(count)

5.字符串相關(guān)操作

1)字符串的運算

  • 數(shù)學(xué)運算:+,*
    a. 字符串1+字符串2:兩個字符串相加,將兩個字符串拼接產(chǎn)生一個新的字符串
    b. 字符串 * 正整數(shù) / 正整數(shù) * 字符串:字符串重復(fù)指定次數(shù)產(chǎn)生一個新的字符串
  • 比較運算:>,<,>=,<=,==,!=
    字符串比較大小:按位置從前往后一對一對的比較,找出第一對不相等的字符,看它們的編碼值誰大,那個字符串就大
應(yīng)用:
判斷一個字符是否是小寫字母: 'a'<=char<='z'
判斷一個字符是否是大寫字母: 'A'<=char<='Z'
判斷一個字符是否是字母: 'a'<=char<='z' or 'A'<=char<='Z'
判斷一個字符是否是數(shù)字字符: '0'<=char<='9'
判斷一個字符是否是中文(4e00-9fa5): '\u4e00'<=char<='\u9fa5', '一'<=char<='龥'
# 練習(xí): 統(tǒng)計一個字符串中大寫字母的個數(shù)
# 例如: How Are You!   -> 3
str4 = 'How Are You!'
count = 0
for char in str4:
    if 'A' <= char <= 'Z':
        count += 1
print(count)
  • 賦值運算:=,+=,*=

2)in 和 not in

  • 字符串1 in 字符串2:判斷字符串2中是否包含字符串1
print('abc' in 'a123abc')     # True
print('abc' in '123ab1c')     # False
print('A' in 'hell A')        # True
print('A' not in 'hello A')   # False

3)len

  • len(字符串):獲取字符串長度(字符串中字符的個數(shù))
print(len('\tabc'))   # 4

str6 = '    abc'
print(len(str6))    # 7

print(len('\u4e00abc'))   # 4

for index in range(len('husjssas')):
    print(index)

4)str

  • str(數(shù)據(jù)):將其他類型數(shù)據(jù)轉(zhuǎn)換成字符串
  • 所有類型的數(shù)據(jù)都可以轉(zhuǎn)換成字符串:轉(zhuǎn)換的時候直接在數(shù)據(jù)的外面加引號
print(str(100))    # '100'
print(str(12.5))   # '12.5'
print(str(True))   # 'True'

5)格式字符串

  • 在字符串中用格式占位符代替字符串中變化的部分,然后再使用數(shù)據(jù)對變化的部分進行賦值
  • 語法:包含格式占位符的字符串 %(數(shù)據(jù)1,數(shù)據(jù)2,...)
  • 說明:數(shù)據(jù)的個數(shù)和類型要和前面字符串中格式占位符的個數(shù)和類型保持一致
  • 格式占位符:%s --- 字符串%d --- 整數(shù)%.Nf --- 浮點數(shù)(N控制小數(shù)點后小數(shù)的位數(shù));%c --- 字符、字符對應(yīng)的編碼值
name = input('姓名:')
age = int(input('請輸入年齡:'))
money = 3.5
message = '我是%s, 今年%d歲, 薪資:%.1fk 等級:%c' % (name, age, money, 66)
print(message)     # 我是ann, 今年18歲, 薪資:3.5k,等級:B
# 方法二
name = input('請輸入姓名:')
print(f'hello, {name}')    

6. 字符串的對象方法

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

1)字符串.capitalize()

  • 將字符串中的第一個字符轉(zhuǎn)換成大寫字母
str1 = 'abc'
print(str1.capitalize())            # Abc
print(str1)                         # abc

2)設(shè)置對齊方式

  • 字符串.center(width, fillchar):讓字符串在新字符串中居中,width控制新字符串的寬度,fillchar是填充字符
  • 字符串.rjust(width, fillchar)
  • 字符串.ljust(width, fillchar)
  • 字符串.zfill(width) : 等于字符串.rjust(width, '0')

3)字符串1.count(字符串2)

  • 統(tǒng)計字符串1中字符串2出現(xiàn)的次數(shù)

4)字符串1.find(字符串2)

  • 返回字符串2在字符串1中第一次出現(xiàn)的下標(0~長度-1的下標);找不到返回-1
  • 字符串1.find(字符串2, startindex, endindex):指定范圍中進行查找

5)字符串.join(序列)

  • 將序列中元素取出來,中間用指定字符串拼接在一起產(chǎn)生一個新的字符串

6)max和min

  • max(序列):獲取序列中的最大值
  • min(序列):獲取序列中的最小值

7)字符串.replace(old,new)

  • 將字符串中指定的舊字符串全部替換成新的字符串
  • 字符串.replace(old,new,替換次數(shù)):指定替換次數(shù)

8)字符串1.split(字符串2)

  • 將字符串1按照字符串2進行切割,返回的是列表

9)字符串.title()

  • 返回"標題化"的字符串,就是說所有單詞的首字母都轉(zhuǎn)化為大寫
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,321評論 6 543
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,559評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,442評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,835評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,581評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,922評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,931評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,096評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,639評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,374評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,591評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,104評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,789評論 3 349
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,196評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,524評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,322評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,554評論 2 379