Day-4 - 字符串(2018-09-28)

一咐蝇、字符串中的元素

1.阻止轉(zhuǎn)義

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

str1 = r'how are you\n fine'
str2 = R'\t 你好嗎?'
print(str1) # how are you\n fine
print(str2) # \t 你好嗎鸭栖?

2.python中可以把字符串看出是一個(gè)序列(容器)歌馍,容器中內(nèi)容是字符。

每一個(gè)字符可以稱為字符串中的元素
字符串是一個(gè)不可變的序列,它是有序的(不可變指的是字符串中的每個(gè)字符晕鹊,以及每個(gè)字符的位置不可變)

3.獲取字符串中的單個(gè)字符

語法:字符串[下標(biāo)] ----> 根據(jù)下標(biāo)獲取字符串中的字符
說明:
a.字符串:可以是字符串的變量松却,也可以是字符串值
b.[]:固定寫法
c.下標(biāo):0 ~ 字符串長度-1(從前往后);
-1 ~ -長度(從后向前)
注意:下標(biāo)是整數(shù)捏题,并且不能越界

python中的每個(gè)字符串的每個(gè)字符都會(huì)對應(yīng)一個(gè)下標(biāo)玻褪,下標(biāo)是根據(jù)字符在字符串中的位置,
從前往后依次增加的(第一個(gè)值是0)

str3 = 'python'

p->0 y->1 t->2 h->3 …… n->5
n->-1 o->-2 h->-3 …… p->-6

print(str3[0]) # p
print(str3[-6]) # p
print(str3[4]) # o
print(str3[-2]) # o

print('hello'[-1]) # o

index = 2
print(str3[index]) # t

# print(str3[6/2]) # TypeError: string indices must be integers
print(str3[6//2]) # h

練習(xí):獲取'good good study\n day day up!'中第一個(gè)day的d字母

str4 = 'good good study\n day day up!'
print(str4[-11],str4[17])

注意:一個(gè)空格算一個(gè)字符,一個(gè)轉(zhuǎn)義字符算一個(gè)字符(一個(gè)制表符/tab鍵也是一個(gè)字符)

print(len(' '))  # 輸入了tab鍵公荧,結(jié)果為1

4.獲取字符串中的部分字符(切片)

  • a.語法:字符串[起始下標(biāo):結(jié)束下標(biāo)] ---> 獲取字符串中從起始下標(biāo)開始带射,到結(jié)束下標(biāo)的所有的字符
    默認(rèn)步長為1
    注意:起始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)對應(yīng)的字符的前面,否則取不到值
str5 = '同九年循狰,汝何秀窟社!'
print(str5[1:5]) # 九年,汝
print(str5[-4:-1]) # 汝何秀
  • b.語法:字符串[起始下標(biāo):結(jié)束下標(biāo):步長] ---> 從起始下標(biāo)開始獲取绪钥,每步長獲取一個(gè)灿里,獲取到結(jié)束下標(biāo)為止
    步長為正:從前往后取(起始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)對應(yīng)的字符的前面程腹,否則取不到值)
    步長為負(fù):從后往前认坏酢(起始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)對應(yīng)的字符的后面,否則取不到值
str6 = '海賊王寸潦、一拳超人色鸳、一人之下、進(jìn)擊的巨人'
print(str6[1:10:2]) # 賊见转、拳人一
print(str6[-1:5:-2]) # 人的進(jìn)下人命雀、超
print(str6[1:0:-1]) # 賊
  • c.切片時(shí)下標(biāo)可以省略,省略不同的下標(biāo)有不同的意義
    省略起始下標(biāo): 字符串[:結(jié)束下標(biāo)] ----> 從開頭開始日扼铩(注意:這兒開頭可能是第一個(gè)字符吏砂,也可能是最后一個(gè)字符)
str7 = '閣下何不同風(fēng)起,扶搖直上九萬里'
print(str7[:4]) # 閣下何不
print(str7[:4:-1]) # 里萬九上直搖扶乘客,起風(fēng)

省略結(jié)束下標(biāo):字符串[起始下標(biāo):] ---> 從開始下標(biāo)取狐血,取到最后,取完為止

print(str7[-4:]) # 上九萬里
print(str7[-4::-1]) # 上直搖扶易核,起風(fēng)同不何下閣

兩個(gè)下標(biāo)都市僦: 字符[:] ----> 全部取完

print(str7[::-1]) # 產(chǎn)生一個(gè)逆序的字符串,結(jié)果是:里萬九上直搖扶耸成,起風(fēng)同不何下閣

注意:切片的時(shí)候下標(biāo)可以越界

print(str7[0:100]) # 閣下何不同風(fēng)起报亩,扶搖直上九萬里
print(str7[-100:3]) # 閣下何

二、字符串的運(yùn)算符

python中的字符串支持+井氢、*和比較運(yùn)算符

  • 1.字符串的+號(hào)運(yùn)算符
    字符串1 + 字符串2 ----> 將字符串1和字符串2拼接在一起產(chǎn)生一個(gè)新的字符串
    注意:+號(hào)兩邊要么都是數(shù)字弦追,要么都是字符串,不能一樣一個(gè)
str1 = '玉樹臨風(fēng)美少年'
str2 = '攬鏡自顧夜不眠'
print(str1 + str2) # 玉樹臨風(fēng)美少年攬鏡自顧夜不眠
# str1 + 100 # TypeError: must be str, not int
new_str = str1 + ',' + str2 + '!'
print(new_str) # 玉樹臨風(fēng)美少年,攬鏡自顧夜不眠!
  • 2.*
    字符串1 * n ----> 字符串1重復(fù)n次花竞,產(chǎn)生一個(gè)新的字符串
    n必須是整數(shù)
str3 = '家有千金劲件,行止由心! '
print(str3 * 3) # 家有千金,行止由心! 家有千金约急,行止由心! 家有千金零远,行止由心! 
print(str3 * -1) # 結(jié)果為空

str4 = str1 + str3*2
print(str4) # 玉樹臨風(fēng)美少年家有千金,行止由心! 家有千金厌蔽,行止由心! 

先算乘牵辣,再算加

  • 3.比較運(yùn)算符
    判斷相等
print('abc' == 'ab') # False
print('abc' != 'ab') # True

字符串比較大小
比較兩個(gè)字符串中從前往后每個(gè)字符的編碼值的大小,比較到兩個(gè)字符不相同為止

print('abcdef' > 'op') # False
print('zabcdef' > 'op') # True
print('zabcdef' > 'zbc') # False
print('zabcdef' > 'zabc')# True
print('你好' < 'abc') # False

可以用來判斷一個(gè)字符是否是數(shù)字字符,判斷一個(gè)字符是否是字母字符

print('-------------')
char = 'a'
print('0' <= char <= '9') # Char是否是數(shù)字字符:False
print('a' <= char <= 'z' or 'A' <= char <= 'Z') # Char是否是字母字符:True
print('\u4e00' <= char <= '\u9fef') # Char是否是中文:False
  • 4.in和not in
    字符串1 in 字符串2 ---> 判斷字符串1是否在字符串2中(字符串2中是否包含字符串1)奴饮,結(jié)果是布爾值
print('ab' in 'aabc') # True
print('ab' in 'adbc') # False

print('ab' not in 'aabc') # False
print('ab' not in 'adbc') # True
    1. len()函數(shù)
      len()是python內(nèi)置函數(shù)纬向,功能是用來獲取序列的長度(容器中元素的個(gè)數(shù))
      len(序列)
      字符串的長度就是字符串中字符的個(gè)數(shù)
print(len('hello')) # 5
print(type(len(str3))) # <class 'int'>

str5 = '床前明月光\n疑是地上霜!'
str6 = r'床前明月光\n疑是地上霜戴卜!'
print(len(str5),len(str6)) # 12 13
str7 = '你好嗎逾条?\u4eff\u5cff'
print(len(str7)) # 6

print(str5[len(str5)-1]) # !
print(str5[-len(str5)]) # 床

三、格式化字符串

格式字符串
字符串的內(nèi)部投剥,通過格式占位符來表示字符串中變化的部分师脂,然后再后面用值來填充變化的部分

  • 語法:帶有占位符的字符串 % (給占位符賦值的值)
  • 注意:前面有多少個(gè)占位符,后邊()中就必須有多少值江锨,并且值的個(gè)數(shù)和值的類型要和前面的占位符一一對應(yīng)
    %s ----> 字符串
    %d ----> 整數(shù)
    %f ----> 浮點(diǎn)數(shù)
    %.nf ----> 保留小數(shù)點(diǎn)后n位小數(shù)(5舍6入)
    %c ----> 字符(格式化字符及其ASCII碼)
name = '張三'
age = 18
money = 10.567
# 方法一:
message = '姓名:' + name + ' 年齡:' + str(age) + ' 薪資:' + str(money)
print(message) # 姓名:張三 年齡:18 薪資:10.567
# 方法二:
message = '姓名:%s吃警, 年齡:%d,  薪資:%f' % (name,age,money)
print(message) # 姓名:張三, 年齡:18,  薪資:10.567000
message = '姓名:%s泳桦, 年齡:%d,  薪資:%.2f' % (name,age,money)
print(message) # 姓名:張三汤徽, 年齡:18,  薪資:10.57

print('%d:%c' % (97,97)) # 97:a

四、字符串中的內(nèi)置函數(shù)

python內(nèi)部給我們提供了很多字符串相關(guān)的方法灸撰,使用方式:字符串.方法名(參數(shù))

  • 1.字符串.capitalize()
    將字符串的第一個(gè)字符轉(zhuǎn)換為大寫谒府,返回一個(gè)新的字符串
    如果第一個(gè)字符不是字母,就不轉(zhuǎn)換
str1 = 'love'
print(str1.capitalize()) # Love
print(str1) # love

new_str = str1.capitalize()
print(new_str) # Love
  • 2.字符串對齊
    a. center(width, fillchar)
    b. ljust(width, fillchar)
    c. rjust(width, fillchar)
    width --> 長度浮毯,新的字符串的總共的長度
    fillchar --> 剩下的部分填充的字符完疫,字符就是長度為1的字符串
str2 = 'dog'
print(str2.center(7,'-')) # --dog--
print(str2.ljust(7,'-')) # dog----
print(str2.rjust(7,'-')) # ----dog

練習(xí):根據(jù)進(jìn)班的順序號(hào)產(chǎn)生對應(yīng)的學(xué)號(hào),學(xué)號(hào)要求:
例如:num = 1 ----> python18070001 num = 11 ---->python18070011
num = 102 ----> python18070102

num = 310
num = str(num)
stu_num = 'python1807' + num.rjust(4,'0')
print(stu_num)
  • 3.字符串1.count(字符串2) ---> 統(tǒng)計(jì)字符串1中字符串2的個(gè)數(shù)
print('abcdacasdca'.count('ca')) # 2
    1. 字符串1.endswith(字符串2) ----> 判斷字符串1是否以字符串2結(jié)尾
      字符串1.startswith(字符串2) ----> 判斷字符串1是否以字符串2開頭
str1 = 'when i was'
print(str1.endswith('as')) # True
  • 5.字符串1.find(字符串2):
    在字符串1中查找字符串2债蓝,返回第一個(gè)所查找字符串開始的下標(biāo)壳鹤,如果沒有就返回-1,如果有多個(gè)返回第一個(gè)所查找字符串開始的下標(biāo)饰迹。
str1 = 'when i was young, was i have a dream'
print(str1.find('was')) # 7
print(str1.find('wasaa')) # -1
  • 6.isnumeric()
    判斷是否只包含數(shù)字芳誓,中文數(shù)字也可以余舶,是返回True,否則返回False
print('1234'.isnumeric()) # True
print('一二三'.isnumeric()) # True
print('壹萬'.isnumeric()) # True
    1. istitle()
      標(biāo)題化:每個(gè)單詞首字母大寫锹淌,其他字母小寫
      判斷字符串是否只包含標(biāo)題化字符串匿值,是返回True,否則返回False
    1. 字符串1.join(字符串2)
      將字符串1插入到字符串2中每個(gè)字符之間
print('aaa'.join('xyz')) # xaaayaaaz

print函數(shù)

a. 一個(gè)print函數(shù)赂摆,可以同時(shí)打印多個(gè)內(nèi)容挟憔,打印的時(shí)候默認(rèn)情況下,多個(gè)數(shù)據(jù)之間用空格隔開烟号,但是可以通過sep去設(shè)置多個(gè)內(nèi)容之間隔開的方式

print('abc', 123, True, sep='*')        # abc*123*True

b.默認(rèn)情況下绊谭,print在打印完內(nèi)容后,會(huì)自動(dòng)打印一個(gè)換行汪拥,可以通過end去設(shè)置打印結(jié)束后打印的內(nèi)容
print('str',end='\n')

print('aaaaaa',end='**')
print('bbbbbb',)
# aaaaaa**bbbbbb
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末达传,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子迫筑,更是在濱河造成了極大的恐慌趟大,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,029評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件铣焊,死亡現(xiàn)場離奇詭異逊朽,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)曲伊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,395評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門叽讳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坟募,你說我怎么就攤上這事岛蚤。” “怎么了懈糯?”我有些...
    開封第一講書人閱讀 157,570評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵涤妒,是天一觀的道長。 經(jīng)常有香客問我赚哗,道長她紫,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,535評(píng)論 1 284
  • 正文 為了忘掉前任屿储,我火速辦了婚禮贿讹,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘够掠。我一直安慰自己民褂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,650評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著赊堪,像睡著了一般面殖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哭廉,一...
    開封第一講書人閱讀 49,850評(píng)論 1 290
  • 那天畜普,我揣著相機(jī)與錄音,去河邊找鬼群叶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛钝荡,可吹牛的內(nèi)容都是我干的街立。 我是一名探鬼主播,決...
    沈念sama閱讀 39,006評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼埠通,長吁一口氣:“原來是場噩夢啊……” “哼赎离!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起端辱,我...
    開封第一講書人閱讀 37,747評(píng)論 0 268
  • 序言:老撾萬榮一對情侶失蹤梁剔,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后舞蔽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荣病,經(jīng)...
    沈念sama閱讀 44,207評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,536評(píng)論 2 327
  • 正文 我和宋清朗相戀三年渗柿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了个盆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,683評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡朵栖,死狀恐怖颊亮,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情陨溅,我是刑警寧澤终惑,帶...
    沈念sama閱讀 34,342評(píng)論 4 330
  • 正文 年R本政府宣布,位于F島的核電站门扇,受9級(jí)特大地震影響雹有,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜臼寄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,964評(píng)論 3 315
  • 文/蒙蒙 一件舵、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧脯厨,春花似錦铅祸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,772評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涡扼。三九已至,卻和暖如春盟庞,著一層夾襖步出監(jiān)牢的瞬間吃沪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,004評(píng)論 1 266
  • 我被黑心中介騙來泰國打工什猖, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留票彪,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,401評(píng)論 2 360
  • 正文 我出身青樓不狮,卻偏偏與公主長得像降铸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子摇零,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,566評(píng)論 2 349

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

  • (補(bǔ)充):字符前面加r/R來阻止轉(zhuǎn)義 字符串 python中可以把字符串看成是一個(gè)序列(容器)驻仅,容器中內(nèi)容只能是字...
    葉葉阿姨閱讀 325評(píng)論 0 0
  • 一谅畅、快捷鍵 ctr+b 執(zhí)行ctr+/ 單行注釋ctr+c ...
    o_8319閱讀 5,793評(píng)論 2 16
  • 1.字符串 字符串:使用單引號(hào)或雙引號(hào)括起來的字符集就是字符串,引號(hào)中單獨(dú)的符號(hào)、數(shù)字噪服、字母毡泻、空格等叫字符。 例:...
    FansYuercero閱讀 406評(píng)論 0 7
  • 【翻轉(zhuǎn)日記粘优,十九】 語言類課程的翻轉(zhuǎn)模式並不固定牙捉,更符合blended learning思維【挫基於ARCS動(dòng)機(jī)模型...
    陳威Jonathan閱讀 99評(píng)論 0 0
  • 前一段時(shí)間无拗,品社考試中和孩子們做了一個(gè)約定带到,如果考到鎮(zhèn)第一名,就拿出兩節(jié)課娛樂一下(看個(gè)電影吃點(diǎn)零食)英染。這不揽惹,本該...
    幸運(yùn)兒_99d9閱讀 686評(píng)論 0 0