1. 程式人生 > 實用技巧 >20201224-2 字串常用操作

20201224-2 字串常用操作

1-1
name = "alex"

print(name.capitalize())

# 所有有下劃線的 比如 __ge__ 我們不用管,它們是內部的,是我們不能用的
1-2
name = "my name is alex"
print(name.count("a"))
1-3
name = "my name is alex"
print(name.center(50,"-"))
1-4
encode 在Python3 中 將一個字串 轉換成 二進位制
name = "my name is alex"
print(name.encode(self,encoding,errors))
1-5
# endswith 以……結尾  判斷字串 以什麼結尾,一致則返回 True
name = "my name is alex"
print(name.endswith("ex"))
# 比如想看一個郵件,是不是以 .com 結尾
1-6
name = "my \tname is alex"
print(name.expandtabs(tabsize=30))
-→ my                            name is alex
1-7
name = "my name is alex"
print(name.find("y"))
-→ 1
# 取出找到的對應字元的索引
name = "my \tname is alex" print(name.find("name")) -→ 4 為什麼返回 4 ? 因為字串 也可以切片 print(name[name.find("name"):9]) -→ name print(name[name.find("name"):]) --> name is alex 字串也可以切片,用法和列表是一樣的
1-8 format 格式化
name = "my name is {name} and i am {year} old"
print(name.format(name='alex',year=23))
--> my name is
alex and i am 23 old
1-9 format_map 
format_map 中的內容為一個字典
name = "my name is {name} and i am {year} old"
print(name.format_map({'name':'alex','year':12}))   這是一個字典,這種語法比較少用,知道 format 即可
--> my name is alex and i am 12 old
1-10 isalnum 判斷是不是阿拉伯數字
name = "my name is alex"
print(name.isalnum())
--> False
print('ab23'.isalnum())
--> True
包含數字和英文可以,有特殊字元不行
1-11 isalpha 純英文字元
print('ab23'.isalpha())
--> False
print('abK'.isalpha())
--> True
1-12 isdecimal 是否為十進位制
print('12222'.isdecimal())

1-13 isdigit 是否為整數
1-14 isidentifier  識別符號
print('1A'.isidentifier())  # 判斷是不是一個合法的識別符號,其實就是相當於判斷是不是一個合法的變數名
--> False
print('a1A'.isidentifier())
--> True
print('a1A星軌'.isidentifier())
--> True        # 中文也可以當變數名,只是千萬別這麼幹
1-15 isnumeric 判斷是否為數字,雖然可以用 isdigit;不知道這個存在的目的是什麼,忘記它吧
print('33'.isnumeric())
print('33.33'.isnumeric())

1-16 isspace() 判斷是否為空格
1-17 istitle() 判斷每個字母是否為大寫
print('My name is  '.istitle())  --> False
print('My Name Is  '.istitle())  --> True

1-18 isprintable() 判斷是否可以列印的
Linux 上的 tty drive file 檔案是不能列印的,就會返回 False 用途較少

1-19 isupper 大寫
1-20 join
print('My Name Is '.join("=="))?
join的玩法
print('+'.join(['1','2','3'])) --> 1+2+3
python3 中 不支援數字,只能通過字串連線

1-21 ljust() 有兩個引數,一個是長度,一個是,,
name = "my name is {name} and i am {year} old"
print(name.ljust(50,'*'))
--> my name is {name} and i am {year} old*************
長度 50;如果不夠,用 * 補上

1-22 rjust() 剛好相反
name = "my name is {name} and i am {year} old"
print(name.rjust(50,'-'))
--> -------------my name is {name} and i am {year} old

1-23 lower() 大寫變小寫
     upper() 小寫變大寫
print('Alex'.lower())  --> alex
print('Alex'.upper())  --> ALEX

1-24 lstrip()  預設去掉兩邊的空格和回車  
     lstrip 就是從左邊去掉空格和回車
print('Alex\n'.lstrip())
print('----')
\n 表示換行
print('\nAlex'.lstrip())
print('----')

1-25 rstrip 去掉右邊的空格和回車,用法同上
1-26 strip  就是去掉兩邊的,全部都去掉
1-27 maketrans()
p = str.maketrans("abcdef",'123456')
print("alex li".translate(p))
--> 1l5x li   
是對應的功能,類似於翻譯對應的感覺;加密的密碼可以這樣玩
必須保證資料一樣多

1-28 replace()  替換  
>>> print('alex li'.replace('l','L',1))
aLex li
只替換了一個,因為後面數字為 1 

1-29 rfind()   從左往右,找到最右邊,最後面值的下標並返回 
In [1]: print('alex li'.rfind('l'))
5
In [2]: print('alex lil'.rfind('l'))
7
1-30 split()  把字串按空格分出列表
>>> print('al ex lil'.split(' '))    按空格分
['al', 'ex', 'lil']
>>> print('al ex lil'.split('l'))    按字母 “l” 分
['a', ' ex ', 'i', '']
l 沒了,因為 l 被當成 分隔符了
如何用呢?比如有一段字元,只想提取數字
>>> print('1+2+3+4'.split('+'))
['1', '2', '3', '4']

1-31 splitlines() 如果遇到換行,按換行符分,可以自動識別不同系統的換行
>>> print('1+2\n+3+4'.splitlines())   
['1+2', '+3+4']
與
>>> print('1+2\n+3+4'.split('\n'))
['1+2', '+3+4']
是完全一樣的效果

1-32 swapcase() 交換大小寫
>>> print('Alex Li'.swapcase())
aLEX lI

1-33 title()
>>> print('lex Li'.title())
Lex Li

1-34 zfill()  可以用於補位
>>> print('lex li'.zfill(50))
00000000000000000000000000000000000000000000lex li