第一章 1.8數(shù)據(jù)類型之字符串

一昌渤、字符串

  • 字符串(str)是容器型數(shù)據(jù)類型椒楣,他是將單引號('')蕉扮、雙引號("")滩租、三個單引號或三個雙引號(''' '''/""" """)作為容器標(biāo)志
  • 字符串有不可變性(不支持增刪改)探膊、有序性(支持下標(biāo)操作)

1杠愧、字符串的元素 ---字符

python中只有字符概念,沒有字符類型逞壁。引號中只有一個元素的字符串可以看成一個字符流济;字符串又叫字符集锐锣。

1)、字符

原則上任何可以通過鍵盤輸入或者從其他地方復(fù)制粘貼的所有符號都可以作為字符

2)绳瘟、普通字符

在字符串中能夠代表符號本身的字符(沒有特殊意義和特殊功能的符號)

3)雕憔、轉(zhuǎn)義字符

在字符串中有特殊意義和特殊功能的字符的組合,一般是以斜杠\開頭的
常見的轉(zhuǎn)義字符:
\n ------> 表示換行
\t ------> 表示一個縮進(jìn)(Tab)
\ ------> 表示斜杠本身
' ------> 表示單引號
" ------> 表示雙引號
\u四位16進(jìn)制數(shù) ------> 編碼字符(獲取四位16進(jìn)制數(shù)作為編碼值對應(yīng)的值)
所有的轉(zhuǎn)義字符長度都是1

4)糖声、阻止轉(zhuǎn)義

在字符串最前面加r/R可以讓當(dāng)前字符串中所有的轉(zhuǎn)義字符失效(所有的符號在字符串中都表示這個符號本身)

str6 = '\tsd\n\'ds123'
str7 = r'\tsd\n\'ds123'

2斤彼、字符編碼

1)、計算機不能直接存儲符號蘸泻,只能存儲數(shù)字琉苇,為了能夠存儲字符,把每個字符關(guān)聯(lián)了一個固定的數(shù)字(這個固定的數(shù)字就是對應(yīng)字符的編碼)
2)悦施、ASCII表在計算機中采用一個字節(jié)保存一個字符(128個字符)翁潘,字符包含了所有的字母、數(shù)字和英文常用符號

? 0-9:編碼值依次增加 歼争; 0對應(yīng)48
? A-Z:編碼值以此增加 ; A對應(yīng)65
? a-z:編碼值依次增加 渗勘; a對應(yīng)97

3)沐绒、Unicode編碼表是ASCII表的擴展,包含了世界上所有國家所有語言對應(yīng)的符號(總共有65536個符號)

? ASCII表范圍:0 - 127
? 中文的編碼范圍:4e00 - 9fa5

方法:

①:編碼字符:\u4位16進(jìn)制數(shù)
②:chr(編碼值(可以是任何進(jìn)制)) - 獲取編碼值對應(yīng)的字符
③:ord(字符) - 獲取指定字符對應(yīng)的編碼值

#獲取所有的中文字符
num = 0
for x in range(0x4e00, 0x9fa5):
  print(chr(x))
  if num % 35 == 0:
    print()



二旺坠、字符串的查(字符串有不可變性(不支持增刪改))

1乔遮、獲取單個字符:字符串[下標(biāo)]

一個空格是一個字符;tab鍵是4個字符取刃;\t是一個字符

2蹋肮、獲取多個字符:切片---字符串[開始下標(biāo):結(jié)束下標(biāo):步長]
3、遍歷:遍歷元素璧疗,遍歷下標(biāo)
str1 = 'hello python'
print(str1[-4])
print(str1[5])
print(str1[2:])
print(str1[:-2:])



三坯辩、字符串的運算和函數(shù)

1、運算符

1)崩侠、加 +, 乘 *
2)漆魔、等 ==, 不等 !=
3)、>, <, >=, <=

字符串比較大小是比較編碼值的大小却音,一個字符一個字符的比較
判斷字符是否是小寫字母:'a'<= char <='z'
判斷字符是否是大寫字母:'A'<= char <='Z'
判斷字符是否是字母:'A'<= char <='Z' or 'a'<= char <='z'
判斷字符是否是中文:'\u4e00' <= char <= '\u9fa5'
判斷字符是否是數(shù)字:'0' <= char <= '9'

# 練習(xí):輸入一個字符串改抡,判斷這個字符串是否是中文字符串(全是中文)
value = input('請輸入:')
for char in value:
    if not '\u4e00 <= char <=\u9fa5':
        print('不是中文字符串')
        break
else:
    print('是中文字符串')

2、in 和 not in

字符串1 in 字符串2 -> 判斷字符串2中是否包含字符串1
print('a' in 'abcdf')
print('abc' in 'abcdf') 子串必須是連續(xù)的

3系瓢、相關(guān)函數(shù)

①阿纤、len(字符串)
print(len('\tsdse\ndsdwds\u4e00'))
②、str(數(shù)據(jù))
print(list(str([10,20,30])))
③夷陋、sorted(字符串) 從小到大排序
str1 = 'python'
print(sorted(str1))
④欠拾、reversed(字符串)倒序



四胰锌、格式字符串

1、格式占位符

1)清蚀、語法:包含格式占位符的字符串 % (值1匕荸,值2,值3枷邪,...)
2)榛搔、說明:

% - 固定寫法
() - 若值只有一個,可省略
值 - 任何有結(jié)果的表達(dá)式东揣,值得個數(shù)和類型要與前面的占位符的個數(shù)和類型相同

格式占位符 - 格式占位符使用的時候和字符串中變化的數(shù)據(jù)類型相關(guān)

  • ?%s - 字符串(任何類型都可以)
  • ?%d - 整型践惑;
  • ?%-Nd - 整型;N約束數(shù)字的長度嘶卧,如果不夠尔觉,空格來湊(后面)。如果超了芥吟,不能約束
  • ?%-Nd - 整型侦铜;N約束數(shù)字的長度,如果不夠钟鸵,空格來湊(前面)钉稍。如果超了,不能約束
  • ?%f - 浮點數(shù)棺耍;小數(shù)點后保留6位
  • ?%.Nf - 浮點數(shù)贡未;N約束小數(shù)點的位數(shù)
name = input('請輸入姓名:')
age = int(input('請輸入年紀(jì):'))
print('你好,我是'+ name +'今年',str(age)+'歲')
print('你好蒙袍,我是%s俊卤,今年%d,工資%s' % (name, age, 200))

2害幅、format

1)消恍、語法:一個帶有{}的字符串.format(值1,值2以现,...)
2)哺哼、用法:

①、大括號的個數(shù)和后面的數(shù)值個數(shù)一樣
print('我是{}叼风,今年{}歲'.format('安', 20))
②取董、{N} - N從0開始以此增加、分別表示format中第0個值无宿,第一個值茵汰。。孽鸡。
print('我是{0}蹂午,年紀(jì)是{1}栏豺,今年{1}歲'.format('安', 20))
print('數(shù)據(jù)1:{1},數(shù)據(jù)2:{0}豆胸,數(shù)據(jù)3:{1}奥洼,'.format(10, 20))
③、[key]
'{key1},{key1}'.format(key1=值1晚胡,key2=值2)
print('我是{name}灵奖,年紀(jì)是{age},今年{age}歲'.format(name='安', age=20))
④估盘、用列表給占位符賦值
list1 = [10, 20, 30, 40]
print('{0[3]}, {0[2]}, {0[1]}'.format(list1))
⑤瓷患、用字典給占位符賦值
student = {'name': '小明', 'age':20, 'id': '001', 'score':100}
print('{name}今年{age}歲,學(xué)號:{id},考了{(lán)score}'.format(**student))
⑥遣妥、其他寫法
print('圓周率:{:.2f}'.format(3.141592654))
- 約束寬度
print('整數(shù):{:0>4d}'.format(25))
print('整數(shù):{:+>4d}'.format(26))
print('整數(shù):{:-<4d}'.format(27))
- 數(shù)字分隔
print('大整數(shù):{:,}'.format(10000000000))
- 百分比
print('百分比:{:.1%}'.format(0.2))


五擅编、字符串的相關(guān)操作

1、字符串.capitalize() - 將字符串的首字母變成大寫字母

2箫踩、center / ljust / rjust / zfill

字符串.center(寬度爱态,填充字符)
print('abc'.center(5,'*'))
字符串.ljust(寬度,填充字符)
print('abc'.ljust(5,'*'))
字符串.rjust(寬度境钟,填充字符)
print('abc'.rjust(5,'*'))
字符串.zfill(寬度) == 字符串.zfill(寬度,'0')
print('abc'.zfill(5))

3锦担、統(tǒng)計

1)、字符串1.count(字符串2)
2)吱韭、字符串1.count(字符串2,開始下標(biāo),結(jié)束下標(biāo)) - 統(tǒng)計開始到結(jié)束范圍內(nèi)字符串2出現(xiàn)的次數(shù)
str2 = 'how are you? i am fine! thank you!'
print(str2.count('you'))
print(str2.count('a'))
print(str2.count('you', 0, 15))

4、判斷str2是否以str1結(jié)尾

print(str2[-len(str1):] == str1)

5鱼的、字符串查找

獲取一個字符串在另一個字符串中第一次出現(xiàn)的位置

str2 = 'how are you? i am fine! thank you!'
print(str2.index('you'))
print(str2.find('you'))

當(dāng)字符串不存在的時候:index報錯理盆,find返回-1

6、join

字符串.join(序列) - 將序列中的元素用字符串連接在一起凑阶,產(chǎn)生新的字符串

str3 = '+'.join('abc')
print(str3)
str4 = ''.join('234cc')
print(str4)
str5 = ''.join({'a': 1, 'b': 2})
print(str5)

7猿规、字符串替換

字符串1.replace(字符串2,字符串3)------將字符串1中所有的字符串2都替換成字符串3

str2 = 'how are you? i am fine! thank you!'
str2.replace('you', 'me')

字符串1.maketrans(字符串2宙橱,字符串3)------創(chuàng)建字符串2和字符串3—一對應(yīng)的映射表
字符串1.translate(替換映射表) ------將字符串1中所有的字符串2都替換成字符串3

table = str.maketrans('a','b')
new_str2 = str2.translate(table)
print(new_str2)

8姨俩、切割

字符串1.split(字符串2)------將字符串1中所有的字符串2作為切割點切成多分,切割點會被去掉并返回一個列表

str2 = 'how are you? i am fine! thank you!'
print(str2.split(' '))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市师郑,隨后出現(xiàn)的幾起案子环葵,更是在濱河造成了極大的恐慌,老刑警劉巖宝冕,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件张遭,死亡現(xiàn)場離奇詭異,居然都是意外死亡地梨,警方通過查閱死者的電腦和手機菊卷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進(jìn)店門缔恳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人洁闰,你說我怎么就攤上這事歉甚。” “怎么了扑眉?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵纸泄,是天一觀的道長。 經(jīng)常有香客問我襟雷,道長刃滓,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任耸弄,我火速辦了婚禮咧虎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘计呈。我一直安慰自己砰诵,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布捌显。 她就那樣靜靜地躺著茁彭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪扶歪。 梳的紋絲不亂的頭發(fā)上理肺,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音善镰,去河邊找鬼妹萨。 笑死,一個胖子當(dāng)著我的面吹牛炫欺,可吹牛的內(nèi)容都是我干的乎完。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼品洛,長吁一口氣:“原來是場噩夢啊……” “哼树姨!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起桥状,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤帽揪,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后辅斟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體台丛,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挽霉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片防嗡。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖侠坎,靈堂內(nèi)的尸體忽然破棺而出蚁趁,到底是詐尸還是另有隱情,我是刑警寧澤实胸,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布他嫡,位于F島的核電站,受9級特大地震影響庐完,放射性物質(zhì)發(fā)生泄漏钢属。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一门躯、第九天 我趴在偏房一處隱蔽的房頂上張望淆党。 院中可真熱鬧,春花似錦讶凉、人聲如沸染乌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽荷憋。三九已至,卻和暖如春褐望,著一層夾襖步出監(jiān)牢的瞬間勒庄,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工瘫里, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留实蔽,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓减宣,卻偏偏與公主長得像盐须,于是被迫代替她去往敵國和親玩荠。 傳聞我的和親對象是個殘疾皇子漆腌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,612評論 2 350

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