day4 字符串常用的方法

字符串

1.什么是字符串

序列:有序乍桂,不可變的。
用單引號或者雙引號括起來的任意字符(集)允趟。

2.字符串中的字符

a.普通字符:'abcABC','123', '+-*/ @#'嘁字,' 中文'等等。
b.轉(zhuǎn)義字符:\n, \t 等等
c.阻止轉(zhuǎn)義:在字符串前面加r或者R



字符編碼

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

a.什么是編碼:

數(shù)字和字符的一一對應(yīng)關(guān)系盛垦,其中字符對應(yīng)的數(shù)字就是字符的編碼
a -- 97
b -- 98

b.編碼方式

ASCII碼表:針對數(shù)字字符、字母字符瓤漏、一些英文中常用的符號進(jìn)行編碼
采用一個字節(jié)對字符進(jìn)行編碼(只有128個字符)
Unicode碼:Unicode碼包含了ASCII碼表腾夯,同時能夠?qū)κ澜缟纤姓Z言對應(yīng)的符號進(jìn)行編碼
采用兩個字節(jié)進(jìn)行編碼(能夠?qū)?5536個字符進(jìn)行編碼)

c.兩個函數(shù)

chr(編碼值) -- 將字符編碼轉(zhuǎn)換成字符
ord(字符) -- 獲取字符對應(yīng)的編碼值

print(chr(0x4E01))
d.可以將字符編碼放到字符串中表示一個字符:\u + 4位的16進(jìn)制編碼值
print('123\uc412')


獲取字符串中的編碼

一旦一個字符串確定,那么字符串中的每一個字符的位置就是確定的蔬充。而且每個字符會對應(yīng)一個用來表示其位置和順序的下標(biāo)值

1.下標(biāo)(索引)

字符串中的每一個字符都有一個下標(biāo)蝶俱,代表其在字符串中的位置
下標(biāo)的范圍是:0 ~ 字符串長度-1 (0代表第一個字符的位置)
-1 ~ -字符長度 (-1代表字符串中最后一個字符的位置)

'abc' # 下標(biāo) a:0或-3 b:1或-2 c:2或-1

2.獲取單個字符

語法:字符串[下標(biāo)] -- 獲取字符串中,指定下標(biāo)對應(yīng)的字符

說明:字符串 -- 可以是字符串常量饥漫,也可以是字符串變量(只要結(jié)果是字符串就行)
[] -- 固定寫法
下標(biāo) -- 字符的下標(biāo)榨呆,不能越界

str1 = 'hello python'
print(str1[6], str1[-6])
print(str1[-2])
3.獲取部分字符

方法一
a.語法:字符串[開始下標(biāo):結(jié)束下標(biāo):步長]
b.說明:字符串 -- 可以是字符串常量,也可以是字符串變量(只要結(jié)果是字符串就行)
[] -- 固定寫法
: -- 固定寫法
開始下標(biāo)庸队、結(jié)束下標(biāo) -- 下標(biāo)值
步長 -- 整數(shù)

c.功能
從開始下標(biāo)開始獲取到結(jié)束下標(biāo)前為止积蜻,每次下標(biāo)值增加步長對應(yīng)的值,結(jié)果是字符串

d.注意:
當(dāng)步長是正數(shù)(從前往后瘸瓜)竿拆,開始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)對應(yīng)的字符的前面
當(dāng)步長是負(fù)數(shù)(從后往前取)宾尚,開始下標(biāo)對應(yīng)的字符要在結(jié)束下標(biāo)對應(yīng)的字符的后面
結(jié)束下標(biāo)對應(yīng)的值取不到的

str1 = '123456790'
print(str1[0:6:1])

方法二
語法:字符串[開始下標(biāo):結(jié)束下標(biāo)](相當(dāng)于步長是1)

4.獲取部分字符丙笋,省略下標(biāo)

獲取部分字符的時候開始下標(biāo)和結(jié)束下標(biāo)都可以省略
a.開始下標(biāo)省略
字符串[:結(jié)束下標(biāo):步長]或者 字符串[:結(jié)束下標(biāo)]
注意:步長為正數(shù) -- 從字符串開頭(下標(biāo)0)開始往后獲取
步長為負(fù)數(shù) -- 從字符串結(jié)尾(下標(biāo)-1)開始往前獲取

str1 = 'abc123abc'
print(str1[:4:1])
print(str1[:4:-1])

b.結(jié)束下標(biāo)省略
字符串[開始下標(biāo)::步長] 或者 字符串[開始下標(biāo):]
注意:步長是正數(shù) -- 從開始下標(biāo)從前往后獲取到字符串結(jié)束
步長是負(fù)數(shù) -- 從開始下標(biāo)從前往后獲取到字符串開始

print(str1[4:])
print(str1[4::-1])

print(str1[:])
print(str1[::-1])   #  字符串倒序


字符串的相關(guān)運算

1.+

字符串1 + 字符串2 -- 將兩個字符串拼接在一起產(chǎn)生一個新的字符串(不會修改原來的字符串)

注意:字符串相加,加號兩邊必須都是字符串

str1 = 'abc'
str2 = '123'
print(str1 + str2)
2.*

字符串 * n(正整數(shù)) -- 字符串的類容重復(fù)n次,產(chǎn)生一個新的字符串

str1 = 'abc'
print(str1 * 3)
print('*'*10)
3.比較運算符:>, <, ==, !=, >=, <=

a.==不见,!=
字符串1 == 字符串2 -- 判斷兩個字符串是否相等

print('abc' == 'abc')
print('abc' != 'abc')
print('abc' == 'cba')

b.>, <, >=, <=
兩個字符串比較大小 -- 從第一個開始澳化,找到第一對不同的字符,然后比較他們編碼值得大小

print('abc' > 'ad')
print('abcde' > 'abcdE')
# 練習(xí):判斷一個字符是否是字母
char = input('請輸入一個字符')
print('是否是字母', 'a' <=  char <= 'z' or 'A' <= char <= 'Z')
# 練習(xí):判斷一個字符是否是中文
print('判斷是否是中文', 0x4e00 <= ord(char) <= 0x9fa5)
print('判斷是否是中文', '\u4e00' <= char <= '\u9fa5')

"""

4.in 和 not in

字符串1 in 字符串2 -- 判斷字符串2中是否包含字符串1稳吮,結(jié)果是布爾
字符串1 not in 字符串2 -- 判斷字符串2中是否不包含字符串1缎谷,結(jié)果是布爾

print('abc' in 'abc123')   # True
print('abc' in 'ab123c')   # False
print('acb' not in 'ab123c')   # True
5.len函數(shù)

len(序列)
len(字符串) -- 獲取字符串中字符的個數(shù)

print(len('abc123'))
6.str

str(數(shù)據(jù)) -- 將數(shù)據(jù)轉(zhuǎn)換成字符串

a.其他數(shù)據(jù)轉(zhuǎn)換成字符串:
所有類型的數(shù)據(jù)都可以轉(zhuǎn)換成字符串,轉(zhuǎn)換的時候就是在數(shù)據(jù)的值的最外面加引號

補(bǔ)充:系統(tǒng)數(shù)據(jù)類型名不能用來給變量命名

str1 = str(100)
print(str1, type(str1))

b.字符串轉(zhuǎn)其他類型
字符串轉(zhuǎn)整數(shù):int(字符串),只有去掉引號后剩下的部分本身就是一個整數(shù)的字符串才能轉(zhuǎn)換成整型
字符串轉(zhuǎn)浮點型:float(字符串)灶似,去掉引號后剩下的部分本身就是一個整數(shù)或小數(shù)的字符串才能轉(zhuǎn)換成浮點型
字符串轉(zhuǎn)布爾:bool(字符串)列林,除了空串會轉(zhuǎn)換成Flase,其他所有字符串都會轉(zhuǎn)換成True

print(int('123'))
print(float('12.89'), float('123'))
print(bool(''), bool('Flase'))


格式字符串

1.格式字符串

指的是字符串中通過格式占位符來表示字符串中變化的部分酪惭,后面再通過其他的值來給占位符賦值希痴。
語法:
含有格式占位符的字符串 % (占位符對應(yīng)的值)

說明:格式占位符 -- 有固定的寫法;可以有多個
% -- 固定寫法
() -- 里面的值的個數(shù)和值的類型要與前面的格式占位符一一對應(yīng)

2.常見的格式占位符

%d -- 整數(shù)
%s -- 字符串
%f -- 小數(shù)(%.nf -- 保留小數(shù)點后n位小數(shù))
%c -- 字符(可以將數(shù)字轉(zhuǎn)換成字符)
"""

name = input('名字')
message = '%s你好春感,吃飯了么砌创?' % (name)
print(message)

message = '%s,今年%d歲,體重:%.2fkg,血型是:%c' %(name, 18+2, 65, 97)
print(message)


"""

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

"""

str1 = 'hello'
new_str1 =str1.capitalize()
print(new_str1)

"""

2.字符串對齊

字符串.center(width, fillchar) -- 居中
字符串.ljust(width, fillchar) -- 左對齊
字符串.rjust(width, fillchar) -- 右對齊

width -- 正整數(shù)鲫懒,表示新的字符串的寬度
fillchar -- 字符嫩实,填充字符串
"""

str1 = '123'
new_str1 = str1.center(7, '*')
print(new_str1)
import random   # 導(dǎo)入隨機(jī)數(shù)對應(yīng)的模塊

"""
random.randint(m, n) -- 產(chǎn)生一個m~n的隨機(jī)整數(shù)
"""

num = random.randint(0, 20)
print(num)
new_num = 'python1808' + str(num).rjust(3, '0')
print(new_num)

"""

3.join(seq)

字符串1.join(字符串2) -- 將字符串1的內(nèi)容插入到字符串2的每個字符之間
"""

str1 = '123'
str2 = '*'
print(str1.join(str2))

"""

4.max(字符串)--返回字符串 str 中最大的字母

min(字符串)--返回字符串 str 中最小的字母
"""

"""

5.字符串1.count(字符串2) -- 表示字符串2在字符串1中出現(xiàn)的次數(shù)

"""

str1 = '123123123'
str2 = '123'
print(str1.count(str2))
6.字符串1.endwith(字符串2) -- 檢查字符串1是否以字符串2結(jié)束,是結(jié)果就為True窥岩,反之為False
print(str1.endswith(str2))
7.字符串1.encode() -- 以指定的編碼方式編碼字符串
print(str1.encode())
8.字符串.expandtabs() -- 把字符串中的tab符號轉(zhuǎn)換為空格甲献,tab符號默認(rèn)為8個空格
print(str1.expandtabs())
9.字符串1.find(字符串2) -- 檢測字符串1是否包含字符串2
print(str1.find(str2))
10.字符串.index(字符串2) -- 檢測字符串1是否包含字符串2,如果不在會報錯
print(str1.index(str2))
11.字符串.isalnum() -- 如果字符串至少有一個字符并且所有字符都是字母或數(shù)字則返回True颂翼,否則返回False
str1 = '123'
str2 ='12asd'
print(str1.isalnum())
print(str2.isalnum())
12.字符串.isalpha() -- 如果字符串至少有一個字節(jié)并且所有字符都是字母則返回True晃洒,否則返回False
str1 ='abc'
print(str1.isalpha())
13.字符串.isdigit() -- 如果字符串只包含數(shù)字則返回 True 否則返回 False
str1 = '123'
str2 ='12asd'
print(str1.isdigit())
print(str2.isdigit())
14.字符串.islower() -- 如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是小寫朦乏,則返回 True球及,否則返回 False
str2 ='abc'
print(str2.islower())
15.字符串.isnumeric() -- 如果字符串中只包含數(shù)字字符,則返回 True呻疹,否則返回 False(中文數(shù)字也可以)
str1 = '100'
str2 = '百萬'
print(str1.isnumeric(), str2.isnumeric())
16.字符串.isspace() -- 如果字符串中只包含空白桶略,則返回 True,否則返回 False
str1 = ' '
str2 = '百 萬'
print(str1.isspace(), str2.isspace())
17.字符串.istitle() -- 如果字符串是標(biāo)題化的(見 title())則返回 True诲宇,否則返回 False
str1 = 'Home '
str2 = '百 萬'
print(str1.istitle(), str2.istitle())
18.字符串.isupper() -- 如果字符串中包含至少一個區(qū)分大小寫的字符,并且所有這些(區(qū)分大小寫的)字符都是大寫惶翻,則返回 True姑蓝,否則返回 False
str1 = 'Home '
str2 = 'ABC'
print(str1.isupper(), str2.isupper())
19.len(字符串) -- 返回字符串長度
str1 = 'Home'
str2 = 'ABC'
print(len(str1), len(str2))
20.字符串.lower() -- 轉(zhuǎn)換字符串中所有大寫字符為小寫.
str1 = 'Home'
str2 = 'ABC'
print(str1.lower(), str2.lower())
21.字符串.lstrip() -- 截掉字符串左邊的空格或指定字符
str1 = ' Home'
str2 = '1ABC'
print(str1.lstrip(), str2.lstrip('1A'))
22.z字符串.replace(old, new [, max])|把 將字符串中的 str1 替換成 str2,如果 max 指定,則替換不超過 max 次
str1 = ' Home'
str2 = '1ABC'
print(str1.replace('H', 'h'), str2.replace('1A', '1'))
23.字符串1.rfind(字符串2) -- 檢測字符串1是否包含字符串2,不過是從右邊開始查找.
str1 = ' 123456789'
str2 = '132'
print(str1.rfind(str2))
24.10.字符串.rindex(字符串2) -- 檢測字符串1是否包含字符串2吕粗,如果不在會報錯,不過是從右邊開始.
str1 = ' 123456789'
str2 = '132'
print(str1.rindex(str2))
25..字符串.rstrip() -- 刪除字符串右邊的空格或指定字符
str1 = ' Home'
str2 = '1ABC'
print(str1.rstrip(), str2.rstrip('C'))
26.字符串.splitlines([keepends])--按照行('\r', '\r\n', \n')分隔纺荧,返回一個包含各行作為元素的列表,如果參數(shù) keepends 為 False,不包含換行符宙暇,如果為 True输枯,則保留換行符。
str1 = ' Ho\nme'
str2 = '1A\rBC'
print(str1.rstrip([True]), str2.rstrip([False]))
27. 字符串1.startwith(字符串2) -- 檢查字符串1是否以字符串2開始占贫,是結(jié)果就為True桃熄,反之為False
str1 = '123123123'
str2 = '123'
print(str1.startswith(str2))
28.字符串.strip([chars]) -- 刪除字符串兩邊的空格
str1 = '123123123'
str2 = '123'
print(str1.strip(), str2.rstrip('1'))
29.(字符串).swapcase -- 將字符串中大寫轉(zhuǎn)換為小寫,小寫轉(zhuǎn)換為大寫
str1 = ' Home'
str2 = '1ABC'
print(str1.swapcase(), str2.swapcase())
30.字符串.title() --返回"標(biāo)題化"的字符串,就是說所有單詞都是以大寫開始型奥,其余字母均為小寫
str1 = 'home aBC'
str2 = 'ABC'
print(str1.title(), str2.title())
31.字符串.upper() -- 轉(zhuǎn)換字符串中的小寫字母為大寫
str1 = 'home aBC'
str2 = 'ABC'
print(str1.upper(), str2.upper())
32.字符串.zfill (width) -- 返回長度為 width 的字符串瞳收,原字符串右對齊,前面填充0
str1 = 'home aBC'
str2 = 'ABC'
print(str1.zfill(1), str2.zfill(9))
33. 字符串.isdecimal() -- 檢查字符串是否只包含十進(jìn)制字符厢汹,如果是返回 true螟深,否則返回 false。
str1 = 'home aBC'
str2 = '0x4567'
print(str1.isdecimal(), str2.isdecimal())
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烫葬,一起剝皮案震驚了整個濱河市界弧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌搭综,老刑警劉巖垢箕,帶你破解...
    沈念sama閱讀 222,590評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異设凹,居然都是意外死亡舰讹,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評論 3 399
  • 文/潘曉璐 我一進(jìn)店門闪朱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來月匣,“玉大人,你說我怎么就攤上這事奋姿〕” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評論 0 362
  • 文/不壞的土叔 我叫張陵称诗,是天一觀的道長萍悴。 經(jīng)常有香客問我,道長寓免,這世上最難降的妖魔是什么癣诱? 我笑而不...
    開封第一講書人閱讀 60,078評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮袜香,結(jié)果婚禮上撕予,老公的妹妹穿的比我還像新娘。我一直安慰自己蜈首,他們只是感情好实抡,可當(dāng)我...
    茶點故事閱讀 69,082評論 6 398
  • 文/花漫 我一把揭開白布欠母。 她就那樣靜靜地躺著,像睡著了一般吆寨。 火紅的嫁衣襯著肌膚如雪赏淌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評論 1 312
  • 那天啄清,我揣著相機(jī)與錄音六水,去河邊找鬼。 笑死盒延,一個胖子當(dāng)著我的面吹牛缩擂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播添寺,決...
    沈念sama閱讀 41,155評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼胯盯,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了计露?” 一聲冷哼從身側(cè)響起博脑,我...
    開封第一講書人閱讀 40,098評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎票罐,沒想到半個月后叉趣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡该押,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,701評論 3 342
  • 正文 我和宋清朗相戀三年疗杉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚕礼。...
    茶點故事閱讀 40,852評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡烟具,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出奠蹬,到底是詐尸還是另有隱情朝聋,我是刑警寧澤,帶...
    沈念sama閱讀 36,520評論 5 351
  • 正文 年R本政府宣布囤躁,位于F島的核電站冀痕,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏狸演。R本人自食惡果不足惜言蛇,卻給世界環(huán)境...
    茶點故事閱讀 42,181評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望宵距。 院中可真熱鬧猜极,春花似錦、人聲如沸消玄。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翩瓜。三九已至受扳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間兔跌,已是汗流浹背勘高。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留坟桅,地道東北人华望。 一個月前我還...
    沈念sama閱讀 49,279評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像仅乓,于是被迫代替她去往敵國和親赖舟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,851評論 2 361