最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python中字符串操作技巧

 更新時(shí)間:2024年10月01日 15:57:47   作者:【1758872】的博客  
在編程中,字符串操作是一項(xiàng)基本技能,常見的操作包括大小寫轉(zhuǎn)換、字符串替換、倒序、統(tǒng)計(jì)、切片、切割、清理和對(duì)齊等,查找方法如find()、rfind()、index()和rindex()用于定位子串,字符串可以通過"+"號(hào)或join()方法拼接,去重技巧等,都是常見的字符串處理需求

字符串基操

常用字符串

import string
 
# 獲取所有的小寫字母
variable = string.ascii_lowercase  # abcdefghijklmnopqrstuvwxyz
# 獲取所有的大寫字母
variable = string.ascii_uppercase  # ABCDEFGHIJKLMNOPQRSTUVWXYZ
# 獲取所有的小寫和大寫字母
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

大小寫轉(zhuǎn)換

st = "hello PYTHON coders"

# 將字符串的第一個(gè)字母變成大寫,其余字母變?yōu)樾?
variable = st.capitalize() # 輸出:Hello python coders
# 返回一個(gè)滿足標(biāo)題格式的字符串。即所有英文單詞首字母大寫,其余英文字母小寫
variable = st.title() # 輸出:Hello Python Coders
# 將字符串中的大小寫字母同時(shí)進(jìn)行互換
variable = st.swapcase() # 輸出:HELLO python CODERS
# 將字符串中的所有大寫字母轉(zhuǎn)換為小寫字母
variable = st.lower() # 輸出:hello python coders
# 將字符串中的所有大寫字母轉(zhuǎn)換為小寫字母。也可以將非英文語言中的大寫轉(zhuǎn)換為小寫
variable = st.casefold()
# 將字符串中的所有小寫字母轉(zhuǎn)換為大寫字母
variable = st.upper() # 輸出:HELLO PYTHON CODERS

字符串替換

st = "Hello Python Coders"
# 把st中的 e 替換成 E,如果 count 指定,則替換不超過 count 次,返回一個(gè)新的字符串,原字符串沒有改變
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)
# 獲取字符串的長度
print(len(st))  # 輸出: 19

字符串切片

字符串切割

# 從左邊開始切割且只切割一次,根據(jù)指定的分隔符將字符串進(jìn)行分割。從字符串左邊開始索引分隔符sep,索引到則停止索引
st.partition('l')
# 從右邊開始切割且只切割一次,根據(jù)指定的分隔符將字符串進(jìn)行分割。從字符串右邊(末尾)開始索引分隔符sep,索引到則停止索引
st.rpartition('l')
# 常用切割從左到右,拆分字符串。通過指定分隔符sep對(duì)字符串進(jìn)行分割,并返回分割后的字符串列表
st.split(' ')
# 常用切割從右到左,拆分字符串。 rsplit()函數(shù)是從字符串右邊(末尾)開始分割
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"
# 返回長度為width,兩邊用(單字符)填充的字符串,若字符串的長度大于width,則直接返回字符串
variable = st.center(42, '*') # 輸出:***********hello python coders************

字符串左對(duì)齊

st = "hello python coders"
# 返回原字符串左對(duì)齊,并使用(單字符)填充(默認(rèn)為空格)至指定長度的新字符串
variable = st.ljust(42, '*') # 輸出:hello python coders***********************

字符串右對(duì)齊

st = "hello python coders"
# 返回原字符串右對(duì)齊,并使用(單字符)填充(默認(rèn)為空格)至指定長度的新字符串
variable = st.rjust(42, '*') # 輸出:***********************hello python coders

字符串填充對(duì)齊

st = "hello python coders"
# 返回指定長度的字符串,使原字符串右對(duì)齊,前面用0填充到指定字符串長度
variable = st.zfill(42) # 輸出:00000000000000000000000hello python coders

字符串查找

使用 find() 方法從左往右查找

st = "hello python coders"
# 查找字符串中指定的子字符串sub第一次出現(xiàn)的位置,可以規(guī)定字符串的索引查找范圍。若無則返回 -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ī)定字符串的索引查找范圍。若無則返回 -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)。若無則會(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)。若無則會(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ù)來源于字典等映射關(guān)系數(shù)據(jù)時(shí)可以使用這種方式
print(f"{name_age.format_map(people)}") #輸出:My name is john, i am 33 old!

字符串去重

通過for循環(huán)實(shí)現(xiàn)去重

name = '王李張李陳王楊張吳周王劉趙黃吳楊'
newname = ''
for char in name:
    if char not in newname:
        newname += char
print(newname)

通過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))

字符串判斷

判斷以什么開頭或以什么結(jié)尾

 st = "hello python coders"
# 判斷字符串是否以指定字符或子字符串開頭
variable = st.startswith('h') # 輸出:True
# 判斷字符串是否以指定字符或子字符串結(jié)尾
variable = st.endswith('a') # 輸出:False

判斷字符串大小寫

# 檢測(cè)字符串中的字母是否全由大寫字母組成
variable = st.isupper()
# 檢測(cè)字符串中的字母是否全由小寫字母組成
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()

判斷是否有打印后不可見字符

# 判斷字符串中是否有打印后不可見的內(nèi)容
variable = st.isprintable()

判斷是否是標(biāo)題格式的字符串

# 檢測(cè)判斷字符串中所有單詞的首字母是否為大寫,且其它字母是否為小寫
variable = st.istitle()

判斷是否為空或者都是ASCII字符組成

# 字符串為空或字符串中的所有字符都是 ASCII,則返回 True,否則返回 False
variable = st.isascii()

常見的處理字符串需求

刪除字符串中的所有數(shù)字

# 將字符串中的數(shù)字移除
message = ''.join(list(filter(lambda x: x.isalpha(), 'abc123def4fg56vcg2')))
print(message)

判斷兩個(gè)字符串是否為異序詞

異序詞是通過重新排列不同單詞或短語的字母而形成的單詞或短語。如果兩個(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(['華為', '小米' , '蘋果', '三星' ]))  # 調(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())

簡單加密

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)文章

最新評(píng)論

鲁山县| 保山市| 和林格尔县| 黄陵县| 化隆| 玉屏| 万宁市| 永善县| 海丰县| 汕尾市| 南昌县| 南雄市| 深州市| 凤冈县| 监利县| 任丘市| 左贡县| 连江县| 库伦旗| 建水县| 资源县| 乐东| 谷城县| 昌吉市| 恩施市| 墨竹工卡县| 舞钢市| 右玉县| 梧州市| 东兰县| 广西| 如东县| 枝江市| 修水县| 宜章县| 开平市| 义马市| 集安市| 柳河县| 平泉县| 金阳县|