Python 字符類型
一、字符串
- 定義:a = 'Python' a = '123' a = "Python" a = """123""" a = '''Python'''
- 單引、雙引和三引對字符串來說並無區別。其中含特殊意義的並未做轉換,如果需要將引號中數據正常輸出直接在前邊加r
如下:
print("a\nb") 輸出:a 和 b(注意:此處是換行了的)
print(r"a\nb") 輸出:a\nb (注意:r表示不進行轉義)
print('i'm Python') 報錯.原因:程序走到第二個'就當結束了。m會當成變量,但是這里並非變量,所以報錯。正確寫法如下:
print("i'm Python") 只要含字母的都需要加引號。否則會報錯。
- 字符串內置方法
#定義變量
msg = "i'm YHL"
capitalize() 注解:首字母大寫. 如:已經大寫還是大寫 其他大寫變成小寫
print (msg.capitalize())
輸出:I'm yhl
lower() 注解:將大寫字母轉成小寫
print(msg.lower())
輸出:i'm yhl
upper() 注解:將所有小寫轉成大寫
print(msg.upper())
輸出:I'M YHL
center(長度,填充的值) 注解:定義長度.讓其變量中字符串劇中顯示
print (msg.center(20))
輸出: i'm YHL :
print (msg.center(20,"*"))
輸出:******i'm YHL*******
count("值") 注解:統計某一字符串出現的次數
print (msg.count("Y"))
輸出:1
print (msg.count("Y",0,3))
輸出:0 PS:從下標開始找. 下標0-3之間找Y出現過幾次. 注意:顧頭不顧尾.這里是0-3實際是0-2
print (msg.count("Y",0,-1))
輸出:0 PS:從下標開始找. 下標0--1之間找Y出現過幾次. 注意:此處的-1表示最后
print (msg.count("Y",3))
輸出:1 PS:從下標開始找. 下標3之后開始找Y出現過幾次.
endswith("值") 注解:判斷以什么結尾.真返回True 否則返回Fales
print (msg.endswith("d"))
輸出:False PS:意思是以什么結尾.如果是返回True 否則返回False
=====================================================================================================================
#定義變量 PS:變量中的\t表示空格.默認是一個tab鍵
msg1 = "a\tb"
xpandtabs() 注解:設置空格大小.默認是八個空格.意思就是說括號中不寫數字
print(msg1.expandtabs(10))
輸出:設置a and b之間的空格大小.
find("值") 注解:查找字符下標或坐標.注意:\t默認占1位.鍵盤上空格敲1下占1位.敲2下占2位.以此類推.一個tab鍵就占1位
print(msg1.find("b"))
輸出:2 PS:空格也算. 注意:如果找不到會返回-1
print(msg1.find("b",0,8))
輸出:2 PS:如果字符串中出現多個只回顯第一個的下標.還有就是這樣寫是規定一個范圍
format("值","值") 注解:格式化字符串
print("{0}{1}{0}".format("name","age"))
輸出:nameagename ps:{0}-name{1}-age{0}-name 注意:相當於是下標一一對應
print("{name}".format(name="YHL"))
輸出:YHL ps:相當於打印變量name對應的值.
print("{}{}{}".format("name","age","YHL"))
輸出:nameageYHL ps:前邊中括號有幾個后台值就必須有幾個.否則會報錯. 注意括號不能多.值可以多
index("值") 注解:查找索引
print(msg1.index("a"))
輸出:1 PS:如果一個變量中出現多個相同的字母.那么也只返回第一個
PS:find 和 index 都是查找下標.
兩個的區別在於:
find:是不知道有沒有.是去找. 如果有正常返回.如果沒有返回-1
index:是知道有.通過已知的去找對應的下標. 如果有正常返回.如果沒有直接報錯
=====================================================================================================================
#定義變量
msg2 = "a123"
isalnum() 注解:判斷變量是否由數字和字母組成.是返回True.否則返回False 純數字和純字母都可以.不能是數字和字母之外的
print(msg2.isalnum())
輸出:True
isalpha() 注解:是字母返回True 否則返回False. 必須全是字母
print(msg2.isalpha())
輸出:False
=====================================================================================================================
#定義變量
msg3 = "10"
isdecilmal() 注解:判斷是否是十進制數. 是返回True 否則返回False 注意:只能是數字.
print(msg3.isdecimal())
輸出:True PS:如果是10.2則會報錯.
isdigit() 注解:判斷是不是整型 注意:只能整數.
print(msg3.isdigit())
輸出:True
=====================================================================================================================
#定義變量
msg4 = "if"
isidentifier() 注解:判斷字符串中是否存在關鍵字. 是返回True 否則返回False
print(msg4.isidentifier())
輸出:True PS:如果是ifa的話就直接返回True 一定要清楚是關鍵字.(包含)
islower() 注解:判斷字符串是否為小寫. 是返回True 否則返回False
print(msg4.islower())
輸出:True PS:必須全都是小寫. 否則返回False
isupper() 注解:判斷字符串是否為大寫. 是返回True 否則返回False
print(msg4.isupper())
輸出:False PS:必須全都是大寫. 否則返回False
=====================================================================================================================
#定義變量
msg5 = " "
isspace() 注解:判斷是否為空格.是空格返回True 否則返回False. 注意:\t也是空格. tab \n 敲鍵盤空格一樣
print(msg5.isspace())
輸出:True PS:不能有其他的.必須全是空格
=====================================================================================================================
#定義變量
msg6 = "Hello Word"
istitle() 注解:判斷抬頭. 就是首字母是不是大寫.是就返回True. 否則返回False.
print(msg6.istitle())
輸出:True PS:是單詞的首字母.如果單詞中還有別的是大寫也是False
=====================================================================================================================
#定義變量
msg7 = "Yhl"
ljust(值,"*") 注解:左對齊.
print(msg7.ljust(10,"*"))
輸出:Yhl******* PS:左對齊,缺少的部分用*填充.長度是10
print(msg7.ljust(10))
輸出:Yhl PS:左對齊,缺少的部分用空格填充.長度是10
ljust(值,"*") 注解:右對齊.
print(msg7.rjust(10,"*"))
輸出:*******Yhl PS:右對齊,缺少的部分用*填充.長度是10
print(msg7.rjust(10))
輸出: Yhl PS:右對齊,缺少的部分用空格填充.長度是10
=====================================================================================================================
#定義變量
msg8 = " abcd "
strip() 注解:去掉空格(前后都去). 如果:" SA SAS"那么中間的空格無法去除
print(msg8.strip())
輸出:abcd
lstrip() 注解:只去掉左邊的空格.右邊的不去掉
print(msg8.lstrip())
輸出:abcd "
rstrip() 注解:只去掉右邊的空格.左邊的不去掉
print(msg8.rstrip())
輸出: abcd
maketrans("值","值") 注解:制作翻譯表.下邊是用法. 長度必須是一一對應否則會報錯.
msg9 = "my name is abcd"
table = str.maketrans("a","2")
print(msg9.translate(table))
輸出:my n2me is 2bcd
=====================================================================================================================
#定義變量
msg10 = "abcdefg"
zfill(10) 注解:右對齊.左邊不夠的用0填充
print(msg10.zfill(10))
輸出:000abcdefg
python 字符串相關方法
- 字符串常用操作
1.移除空白
msg01 = " dsadasi21 \n "
print(msg01.strip())
輸出:dsadasi21
2.分割
msg02 = "www.baidu.com"
print(msg02.split("i"))
輸出:['www.ba', 'du.com'] PS:以i為點進行分割.
print(msg02.split(".",1))
輸出:['www', 'baidu.com'] PS:以.進行分割1次.
print(msg02.split(".",2))
輸出:['www', 'baidu', 'com'] PS:以.進行分割2次. 注意:如果.在字符串中不夠分的次數.那么不會報錯.按最多分
print(msg02.split(".")[0])
輸出:www PS:以.進行分割.並打印出下標為0的數據
print(msg02.split(".")[-1])
輸出:com PS:以.進行分割.並打印出最后一個數據
print(msg02.split(".")[0:2])
輸出:['www', 'baidu'] PS:以.進行分割.並打印出下標是0,1的數據
3.長度
msg03 = "www.baidu.com"
print(len(msg02))
輸出:13 PS:計算字符串長度
4.索引(和切片很像)
msg04="welcometobeijingYhl"
print(msg04[2])
輸出:l PS:通過索引獲取字符串中對應的值
print(msg04.index("o"))
輸出:4 PS:通過字符串中的值找對應的下標(索引)
5.切片
msg04="welcometobeijingYhl"
print(msg04[0:3])
輸出:wel
print(msg04[0:])
輸出:welcometobeijingYhl
print(msg04[0:-1])
輸出:welcometobeijingYh
print(msg04[:])
輸出:welcometobeijingYhl
print(msg04[2])
輸出:l PS:通過索引取對應的值
print(msg04[2:7:2])
輸出:loe PS:步長. 各幾個取幾次.
- 轉義字符
下表是一個逃跑或反斜線符號可以代表的非打印字符的清單。
注:在doublequoted字符串,轉義字符被解釋;在singlequoted字符串,轉義字符被保留。
| 反斜線 符號 | 十六進制字符 | 描述 |
| \a | 0x07 | Bell or alert |
| \b | 0x08 | Backspace |
| \cx | Control-x | |
| \C-x | Control-x | |
| \e | 0x1b | Escape |
| \f | 0x0c | Formfeed |
| \M-\C-x | Meta-Control-x | |
| \n | 0x0a | Newline |
| \nnn | Octal notation, where n is in the range 0.7 | |
| \r | 0x0d | Carriage return |
| \s | 0x20 | Space |
| \t | 0x09 | Tab |
| \v | 0x0b | Vertical tab |
| \x | Character x | |
| \xnn | Hexadecimal notation, where n is in the range 0.9, a.f, or A.F |
- 字符串運算符
假設A持有'hello'和變量b擁有'Python'的字符串變量:
| 操作符 | 描述 | 例子 |
| + | 串聯 - 添加操作兩邊的值 | a + b 將得到 HelloPython |
| * | 重復 - 創建新的字符串,相同的字符串連接的多個副本 | a*2 將得到 -HelloHello |
| [] | 切片 - 從給定的索引字符 | a[1] will give e |
| [:] | 范圍切片 - 從給定范圍內的字符 | a[1:4] will give ell |
| in | 成員關系 - 返回true,如果存在一個字符在給定的字符串 | H in a will give 1 |
| not in | 成員關系 - 返回true,如果不存在一個字符在給定的字符串 | M not in a will give 1 |
| r/R | 原始字符串 - 禁止轉義字符的實際意義。必須放在緊接第一個引號。正常輸出 | print r'\n' prints \n print R'\n' prints \n |
| % | 格式化 - 執行字符串格式 | See at next section |
萬惡的字符串拼接:
pythom中的字符串在C語言中體現為師一個字符數組,每次創建字符串的時候需要在內存中開辟一塊連續的空間,並且一旦修改字符串的話,就需要在次開辟一塊新的連續空間,萬惡的加號(+)每出現一次,就會在內存中重新開辟一塊新的空間。
- 下面是一套完整的符號可用%的列表:
| 符號 | 轉換含義 | 符號 | 轉換含義 |
| %c | character | %X | hexadecimal integer (UPPERcase letters) |
| %s | string conversion via str() prior to formatting | %e | exponential notation (with lowercase 'e') |
| %i | signed decimal integer | %E | exponential notation (with UPPERcase 'E') |
| %d | signed decimal integer | %f | floating point real number |
| %u | unsigned decimal integer | %g | the shorter of %f and %e |
| %o | octal integer | %G | the shorter of %f and %E |
| %x | hexadecimal integer (lowercase letters) |
- 其他支持的符號和功能下表中列出:
| 符號 | 功能 |
| * | argument specifies width or precision |
| - | left justification |
| + | display the sign |
| leave a blank space before a positive number | |
| # | add the octal leading zero ( '0' ) or hexadecimal leading '0x' or '0X', depending on whether 'x' or 'X' were used. |
| 0 | pad from left with zeros (instead of spaces) |
| % | '%%' leaves you with a single literal '%' |
| (var) | mapping variable (dictionary arguments) |
| m.n. | m is the minimum total width and n is the number of digits to display after the decimal point (if appl.) |
