Python中字符串操作技巧
字符串基操
常用字符串
import string # 獲取所有的小寫(xiě)字母 variable = string.ascii_lowercase # abcdefghijklmnopqrstuvwxyz # 獲取所有的大寫(xiě)字母 variable = string.ascii_uppercase # ABCDEFGHIJKLMNOPQRSTUVWXYZ # 獲取所有的小寫(xiě)和大寫(xiě)字母 variable = string.ascii_letters # abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ # 獲取八進(jìn)制數(shù)字 variable = string.octdigits # 01234567 # 獲取十進(jìn)制數(shù)字 variable = string.digits # 0123456789 # 獲取十六進(jìn)制數(shù)字 variable = string.hexdigits # 0123456789abcdefABCDEF # 獲取所有的標(biāo)點(diǎn)字符 variable = string.punctuation # !"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ # 獲取所有可打印字符 variable = string.printable # 0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c # 獲取所有的空白字符 variable = string.whitespace
大小寫(xiě)轉(zhuǎn)換
st = "hello PYTHON coders" # 將字符串的第一個(gè)字母變成大寫(xiě),其余字母變?yōu)樾?xiě) variable = st.capitalize() # 輸出:Hello python coders # 返回一個(gè)滿足標(biāo)題格式的字符串。即所有英文單詞首字母大寫(xiě),其余英文字母小寫(xiě) variable = st.title() # 輸出:Hello Python Coders # 將字符串中的大小寫(xiě)字母同時(shí)進(jìn)行互換 variable = st.swapcase() # 輸出:HELLO python CODERS # 將字符串中的所有大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母 variable = st.lower() # 輸出:hello python coders # 將字符串中的所有大寫(xiě)字母轉(zhuǎn)換為小寫(xiě)字母。也可以將非英文語(yǔ)言中的大寫(xiě)轉(zhuǎn)換為小寫(xiě) variable = st.casefold() # 將字符串中的所有小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母 variable = st.upper() # 輸出:HELLO PYTHON CODERS
字符串替換
st = "Hello Python Coders" # 把st中的 e 替換成 E,如果 count 指定,則替換不超過(guò) count 次,返回一個(gè)新的字符串,原字符串沒(méi)有改變 variable = st.replace('e', 'E') # HEllo Python CodErs variable = st.replace('e', 'E', 1) # HEllo Python Coders # 制表符替換,將字符串中的 \\t 替換為一定數(shù)量的空格。默認(rèn)tabsize=8 variable = st.expandtabs(tabsize=8)
字符串倒序
st = "hello Python coders" # 將字符串倒序,反轉(zhuǎn)字符串,注意:這得到的是一個(gè)新的字符串 variable = st[::-1]
字符串統(tǒng)計(jì)
st = "Hello Python Coders" # 統(tǒng)計(jì)字符串里某個(gè)字符出現(xiàn)的次數(shù),可以選擇字符串索引的起始位置和結(jié)束位置 variable = st.count('o') # 統(tǒng)計(jì) [0, 10) 區(qū)間字母 o 出現(xiàn)的次數(shù) variable = st.count('o', 0, 10) # 獲取字符串的長(zhǎng)度 print(len(st)) # 輸出: 19
字符串切片
字符串切割
# 從左邊開(kāi)始切割且只切割一次,根據(jù)指定的分隔符將字符串進(jìn)行分割。從字符串左邊開(kāi)始索引分隔符sep,索引到則停止索引 st.partition('l') # 從右邊開(kāi)始切割且只切割一次,根據(jù)指定的分隔符將字符串進(jìn)行分割。從字符串右邊(末尾)開(kāi)始索引分隔符sep,索引到則停止索引 st.rpartition('l') # 常用切割從左到右,拆分字符串。通過(guò)指定分隔符sep對(duì)字符串進(jìn)行分割,并返回分割后的字符串列表 st.split(' ') # 常用切割從右到左,拆分字符串。 rsplit()函數(shù)是從字符串右邊(末尾)開(kāi)始分割 st.rsplit('l') # 按照換行符分割,按照('\\n','\\r',\\r\\n'等)分隔,返回列表,默認(rèn)不包含換行符,keepends=True則保留換行符 st.splitlines()
字符串清理
variable = st.lstrip() # 刪除字符串左邊的空格或指定字符(默認(rèn)為空格) variable = st.rstrip() # 刪除字符串右邊的空格或指定字符(默認(rèn)為空格) variable = st.strip() # 刪除字符串兩端的空格或指定字符(默認(rèn)為空格),不會(huì)去除字符串中間對(duì)應(yīng)的字符 variable = "00000003210Runoob01230000000".strip('0') # 去除首尾字符 0,輸出:3210Runoob0123
字符串對(duì)齊
字符串中間對(duì)齊
st = "hello python coders" # 返回長(zhǎng)度為width,兩邊用(單字符)填充的字符串,若字符串的長(zhǎng)度大于width,則直接返回字符串 variable = st.center(42, '*') # 輸出:***********hello python coders************
字符串左對(duì)齊
st = "hello python coders" # 返回原字符串左對(duì)齊,并使用(單字符)填充(默認(rèn)為空格)至指定長(zhǎng)度的新字符串 variable = st.ljust(42, '*') # 輸出:hello python coders***********************
字符串右對(duì)齊
st = "hello python coders" # 返回原字符串右對(duì)齊,并使用(單字符)填充(默認(rèn)為空格)至指定長(zhǎng)度的新字符串 variable = st.rjust(42, '*') # 輸出:***********************hello python coders
字符串填充對(duì)齊
st = "hello python coders" # 返回指定長(zhǎng)度的字符串,使原字符串右對(duì)齊,前面用0填充到指定字符串長(zhǎng)度 variable = st.zfill(42) # 輸出:00000000000000000000000hello python coders
字符串查找
使用 find() 方法從左往右查找
st = "hello python coders" # 查找字符串中指定的子字符串sub第一次出現(xiàn)的位置,可以規(guī)定字符串的索引查找范圍。若無(wú)則返回 -1 variable = st.find('e') # 輸出:1 variable = st.find('e', 3) # 輸出:16 variable = st.find('e', 3, 10) # 輸出:-1
使用 rfind() 方法從右往左查找
st = "hello python coders" # 查找字符串中指定的子字符串sub最后一次出現(xiàn)的位置,可以規(guī)定字符串的索引查找范圍。若無(wú)則返回 -1 variable = st.rfind('e') # 輸出:16 variable = st.rfind('e', 6) # 輸出:16 variable = st.rfind('e', 6, 10) # 輸出:-1 variable = st.rfind('e', 0, 10) # 輸出:1
使用 index() 方法從左往右查找
st = "hello python coders" # 查找字符串中第一次出現(xiàn)的子字符串的位置,可以規(guī)定字符串的索引查找范圍[star, end)。若無(wú)則會(huì)報(bào)錯(cuò) variable = st.index('e') # 輸出:1 variable = st.index('e', 2) # 輸出:16 variable = st.index('e', 2, 8) # 報(bào)錯(cuò)
使用 rindex() 方法從右往左查找
st = "hello python coders" # 查找字符串中最后一次出現(xiàn)的子字符串的位置,可以規(guī)定字符串的查找范圍[star, end)。若無(wú)則會(huì)報(bào)錯(cuò) variable = st.rindex('e') # 輸出:16 variable = st.rindex('e', 3) # 輸出:16 variable = st.rindex('e', 0, 5) # 輸出:1 variable = st.rindex('e', 2, 8) # 報(bào)錯(cuò)
字符串拼接
使用 “+” 號(hào)拼接
str1 = "Hello, " str2 = "World!" result = str1 + str2 print(result) # 輸出: Hello, World!
使用 join() 方法拼接
str_list = ["Hello", "World", "!"] result = "".join(str_list) print(result) # 輸出: HelloWorld!
字符串格式化
st = "hello Python coders" print(f"{st}") # 輸出:hello Python coders print(f"{st=}") # 輸出:st='hello Python coders' test = 'My name is {}' # 格式化字符串,在字符串中使用大括號(hào)作為占位符 print(f"{test.format('jack')}") # 輸出:My name is jack people = {"name": "john", "age": 33} name_age = 'My name is {name}, i am {age} old!' # 僅使用于字符串格式中可變數(shù)據(jù)參數(shù)來(lái)源于字典等映射關(guān)系數(shù)據(jù)時(shí)可以使用這種方式 print(f"{name_age.format_map(people)}") #輸出:My name is john, i am 33 old!
字符串去重
通過(guò)for循環(huán)實(shí)現(xiàn)去重
name = '王李張李陳王楊張吳周王劉趙黃吳楊' newname = '' for char in name: if char not in newname: newname += char print(newname)
通過(guò)while循環(huán)實(shí)現(xiàn)去重
name = '123241536718965' newname = '' length = len(name) - 1 while True: if length >= 0: if name[length] not in newname: newname += name[length] length -= 1 else: break print(newname)
利用集合的特性實(shí)現(xiàn)去重
name = '王李張李陳王楊張吳周王劉趙黃吳楊' newname = list(set(name)) # 保持索引順序不變 newname.sort(key=name.index) print(''.join(newname))
在原字符串上刪除實(shí)現(xiàn)去重
name = '王李張汪李陳王楊張吳周王劉趙黃吳楊' for s in name: if s in name[1:]: name = name[1:] else: name = name[1:] + name[0] print(name)
利用字典的特性實(shí)現(xiàn)去重
name = '王李張李陳王楊張吳周王劉趙黃吳楊' # 使用fromkeys()方法把字符串轉(zhuǎn)成字典 mylist = list({}.fromkeys(name).keys()) print(''.join(mylist))
字符串判斷
判斷以什么開(kāi)頭或以什么結(jié)尾
st = "hello python coders" # 判斷字符串是否以指定字符或子字符串開(kāi)頭 variable = st.startswith('h') # 輸出:True # 判斷字符串是否以指定字符或子字符串結(jié)尾 variable = st.endswith('a') # 輸出:False
判斷字符串大小寫(xiě)
# 檢測(cè)字符串中的字母是否全由大寫(xiě)字母組成 variable = st.isupper() # 檢測(cè)字符串中的字母是否全由小寫(xiě)字母組成 variable = st.islower()
判斷字符串是否是有效標(biāo)識(shí)符
# 判斷str是否是有效標(biāo)識(shí)符。str為符合命名規(guī)則的變量,則返回True,否則返回False variable = st.isidentifier()
判斷字符串是否只由空格組成
# 檢測(cè)字符串是否只由空格組成。若字符串中只包含空格,則返回 True,否則返回 False variable = st.isspace()
判斷字符串是否只由字母組成
# 檢測(cè)字符串是否只由字母組成,字符串中至少有一個(gè)字符且所有字符都是字母則返回True,否則False variable = st.isalpha()
判斷字符串是否只由字母和數(shù)字組成
# 檢測(cè)是否由字母和數(shù)字組成,str中至少有一個(gè)字符且所有字符都是字母或數(shù)字則返回True,否則False variable = st.isalnum()
判斷字符串是否只包含十進(jìn)制字符
# 檢查字符串是否只包含十進(jìn)制字符。字符串中若只包含十進(jìn)制字符返回True,否則返回False variable = st.isdecimal() # 檢測(cè)字符串是否只由數(shù)字組成.字符串中至少有一個(gè)字符且所有字符都是數(shù)字則返回True,否則返回False variable = st.isdigit() # 測(cè)字符串是否只由數(shù)字組成,字符串中只包含數(shù)字字符,則返回 True,否則返回 False variable = st.isnumeric()
判斷是否有打印后不可見(jiàn)字符
# 判斷字符串中是否有打印后不可見(jiàn)的內(nèi)容 variable = st.isprintable()
判斷是否是標(biāo)題格式的字符串
# 檢測(cè)判斷字符串中所有單詞的首字母是否為大寫(xiě),且其它字母是否為小寫(xiě) variable = st.istitle()
判斷是否為空或者都是ASCII字符組成
# 字符串為空或字符串中的所有字符都是 ASCII,則返回 True,否則返回 False variable = st.isascii()
常見(jiàn)的處理字符串需求
刪除字符串中的所有數(shù)字
# 將字符串中的數(shù)字移除 message = ''.join(list(filter(lambda x: x.isalpha(), 'abc123def4fg56vcg2'))) print(message)
判斷兩個(gè)字符串是否為異序詞
異序詞是通過(guò)重新排列不同單詞或短語(yǔ)的字母而形成的單詞或短語(yǔ)。如果兩個(gè)字符串的 Counter 對(duì)象相等,那么它們就是相同字母異序詞對(duì)。
from collections import Counter s1, s2, s3 = "acbde", "abced", "abcda" c1, c2, c3 = Counter(s1), Counter(s2), Counter(s3) if c1 == c2: print('1和2是異序詞') if c1 == c3: print('1和3是異序詞') else: print('1和3不是異序詞')
按照拼音順序?qū)χ形臐h字進(jìn)行排序
from xpinyin import Pinyin # 導(dǎo)入漢字轉(zhuǎn)拼音模塊 def my_sort(wordlist): # 指定要排序的列表 pin = Pinyin() # 創(chuàng)建漢字轉(zhuǎn)拼音對(duì)象 temp = [] # 保存轉(zhuǎn)換結(jié)果的空列表 for item in wordlist: # 遍歷品牌名稱列表 temp.append((pin.get_pinyin(item), item)) # 將漢字的拼音和漢字放到一個(gè)元組中,再添加到列表中 temp.sort() # 對(duì)列表進(jìn)行排序 result = [] # 保存排序后的列表 for i in range(len(temp)): # 遍歷排序后的列表 result.append(temp[i][1]) # 取出漢字保存到新列表中 return result # 返回排序后的列表 print(my_sort(['華為', '小米' , '蘋(píng)果', '三星' ])) # 調(diào)用函數(shù)時(shí)指定一個(gè)品牌名稱列表
常用算法對(duì)字符串進(jìn)行加密
import hashlib str = input('請(qǐng)輸入要加密的字符串:') #MD5加密(返回32位16進(jìn)制表示字符串) md5 = hashlib.md5() md5.update(str.encode('utf-8')) print('MD5加密:',md5.hexdigest()) #SHA1加密(返回40位16進(jìn)制表示字符串) sha1 = hashlib.sha1() sha1.update(str.encode('utf-8')) print('SHA1加密:',sha1.hexdigest()) #SHA256加密(返回64位16進(jìn)制表示字符串) sha256 = hashlib.sha256() sha256.update(str.encode('utf-8')) print('SHA256加密:',sha256.hexdigest()) # 采用哈希算法計(jì)算后的MD5加密 import hmac pwd = str.encode('utf-8') key = 'id'.encode('utf-8') h = hmac.new(key, pwd, digestmod='MD5') print('更安全的MD5加密:', h.hexdigest())
簡(jiǎn)單加密
in_str = 'hello' out_str = '12345' sm = st.maketrans(in_str, out_str) print(f"制作翻譯表,常與translate()函數(shù)連用。即:返回用于translate方法翻譯的轉(zhuǎn)換表:{st.maketrans(in_str, out_str)}") print(f"str.translate方法翻譯的轉(zhuǎn)換表。:{st.translate(sm)}")
到此這篇關(guān)于Python中字符串操作技巧的文章就介紹到這了,更多相關(guān)Python字符串操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python如何實(shí)現(xiàn)網(wǎng)絡(luò)自動(dòng)化運(yùn)維華為設(shè)備
本文介紹了如何使用Python實(shí)現(xiàn)華為設(shè)備的網(wǎng)絡(luò)自動(dòng)化運(yùn)維,包括環(huán)境配置、設(shè)備配置、功能模塊實(shí)現(xiàn)和SFTP文件傳輸測(cè)試2024-11-11Python實(shí)現(xiàn)softmax反向傳播的示例代碼
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)softmax反向傳播的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下2023-04-04Python實(shí)現(xiàn)統(tǒng)計(jì)文本中的字符數(shù)量
這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)統(tǒng)計(jì)文本中的字符數(shù)量,包括中/英文字符、數(shù)字、特殊字符等,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-05-05python時(shí)間序列數(shù)據(jù)相減的實(shí)現(xiàn)
本文主要介紹了python時(shí)間序列數(shù)據(jù)相減的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Python基于Hypothesis測(cè)試庫(kù)生成測(cè)試數(shù)據(jù)
這篇文章主要介紹了Python基于Hypothesis測(cè)試庫(kù)生成測(cè)試數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Python實(shí)現(xiàn)Canny及Hough算法代碼實(shí)例解析
這篇文章主要介紹了Python實(shí)現(xiàn)Canny與Hough算法代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08