欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python中字符串操作技巧

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

字符串基操

常用字符串

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)網(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-11
  • Python實(shí)現(xiàn)softmax反向傳播的示例代碼

    Python實(shí)現(xiàn)softmax反向傳播的示例代碼

    這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)softmax反向傳播的相關(guān)資料,文中的示例代碼講解詳細(xì),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-04-04
  • Python實(shí)現(xiàn)統(tǒng)計(jì)文本中的字符數(shù)量

    Python實(shí)現(xiàn)統(tǒng)計(jì)文本中的字符數(shù)量

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)統(tǒng)計(jì)文本中的字符數(shù)量,包括中/英文字符、數(shù)字、特殊字符等,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-05-05
  • python時(shí)間序列數(shù)據(jù)相減的實(shí)現(xiàn)

    python時(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-04
  • Python基于Hypothesis測(cè)試庫(kù)生成測(cè)試數(shù)據(jù)

    Python基于Hypothesis測(cè)試庫(kù)生成測(cè)試數(shù)據(jù)

    這篇文章主要介紹了Python基于Hypothesis測(cè)試庫(kù)生成測(cè)試數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python腳本制作天氣查詢實(shí)例代碼

    Python腳本制作天氣查詢實(shí)例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于Python腳本制作天氣查詢實(shí)例代碼實(shí)例,有興趣的朋友們可以參考學(xué)習(xí)下。
    2021-08-08
  • python中正則表達(dá)式?: ?= ?! 的用法

    python中正則表達(dá)式?: ?= ?! 的用法

    正則表達(dá)式中使用的??:、?=?和??!?是三種不同的正則表達(dá)式語(yǔ)法,它們分別代表非捕獲組、正向前瞻斷言和負(fù)向前瞻斷言,下面就來(lái)介紹一下這三種的方法,感興趣的可以了解一下
    2025-04-04
  • python畫(huà)微信表情符的實(shí)例代碼

    python畫(huà)微信表情符的實(shí)例代碼

    這篇文章主要介紹了python畫(huà)微信表情的實(shí)例代碼,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python實(shí)現(xiàn)Canny及Hough算法代碼實(shí)例解析

    Python實(shí)現(xiàn)Canny及Hough算法代碼實(shí)例解析

    這篇文章主要介紹了Python實(shí)現(xiàn)Canny與Hough算法代碼實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python注釋和運(yùn)算符詳解

    python注釋和運(yùn)算符詳解

    這篇文章主要為大家介紹了python注釋和運(yùn)算符,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12

最新評(píng)論