掌握 Python:15 個(gè)關(guān)于字符串操作的神級(jí)單行代碼
今天我們要一起變成Python字符串操作的大師,用短短的單行代碼實(shí)現(xiàn)看似復(fù)雜的任務(wù)。準(zhǔn)備好你的筆記本,讓我們一起探索這些簡(jiǎn)潔而強(qiáng)大的字符串魔法吧!
1. 快速去除字符串兩端空白
s = " Hello World! "
clean_s = s.strip() # 去除首尾空格,簡(jiǎn)單粗暴!
解釋:.strip() 方法就像一把神奇的橡皮擦,擦去字符串開頭和結(jié)尾的所有空白字符。
2. 轉(zhuǎn)換首字母大寫
title_case = "hello world".title() # 讓每個(gè)單詞首字母都穿上大衣!
解釋:.title() 方法讓每個(gè)單詞的首字母都自動(dòng)變?yōu)榇髮?,非常適合標(biāo)題化文本。
3. 反轉(zhuǎn)字符串
reversed_str = "python"[::-1] # 翻轉(zhuǎn),翻轉(zhuǎn),讓字符串倒立!
解釋:利用切片 [start:stop:step],省略 start 和 stop 默認(rèn)從頭到尾,-1 讓步長(zhǎng)反向,實(shí)現(xiàn)反轉(zhuǎn)。
4. 分割字符串成列表
words = "one,two,three".split(",") # 射擊!每個(gè)逗號(hào)后分裂。
解釋:.split(separator) 方法,把字符串按指定分隔符切成列表,沒有指定就默認(rèn)為空格。
5. 合并列表成字符串
merged_str = "-".join(["apple", "banana", "cherry"]) # 拼接彩虹,用喜歡的符號(hào)!
解釋:.join(list) 方法,用指定的字符連接列表中的所有元素成為字符串。
6. 快速計(jì)數(shù)字符出現(xiàn)次數(shù)
count_a = "banana".count("a") # 數(shù)一數(shù),有幾個(gè)‘a(chǎn)’?
解釋:.count(substring),統(tǒng)計(jì)子字符串在原字符串中出現(xiàn)的次數(shù),這下知道香蕉里有多少個(gè)‘a(chǎn)’了吧!
7. 判斷是否包含子字符串
contains_hello = "Hello, Python!".startswith("Hello") # 開頭有秘密嗎?
解釋:.startswith(prefix) 和 .endswith(suffix) 分別檢查字符串是否以特定前綴或后綴開始或結(jié)束,返回布爾值。
8. 替換字符串中的部分
new_str = "python is fun".replace("fun", "awesome") # 改頭換面,‘fun’變‘a(chǎn)wesome’!
解釋:.replace(old, new[, count]),將舊字符串替換為新字符串,還可以指定替換次數(shù)。
9. 字符串長(zhǎng)度統(tǒng)計(jì)
length = len("Python編程") # 測(cè)量字符串的長(zhǎng)度。
解釋:len(object),萬能的長(zhǎng)度測(cè)量工具,適用于任何序列對(duì)象。
10. 中間插入字符
inserted = "Python".join(['(', '3.', ')']) # 在字符串間施法,插入符號(hào)。
解釋:通過 .join() 方法,巧妙地在字符串序列的每個(gè)元素之間插入字符,這里我們給Python版本號(hào)加了括號(hào)。
11. 列表元素合并為字符串,每個(gè)元素間加空格
spaced_list = ' '.join(map(str, [1, 2, 3])) # 數(shù)字變字符串,中間還有空格哦!
解釋:先用 map(str, list) 把列表中的每個(gè)元素轉(zhuǎn)換成字符串,然后用空格 .join() 起來。
12. 大小寫轉(zhuǎn)換
lower_to_upper = "lower case".upper() # 上下翻轉(zhuǎn),全大寫!
upper_to_lower = "UPPER CASE".lower() # 全部小寫,低調(diào)行事。
解釋:.upper() 和 .lower() 分別將字符串轉(zhuǎn)換為全大寫和全小寫。
13. 字符串格式化
formatted = f"My name is {input('What is your name? ')}" # 輸入你的名字,我來告訴你。
解釋:f-string(Python 3.6+)允許在字符串中直接嵌入表達(dá)式,超級(jí)直觀方便。
14. 制作重復(fù)字符串
pattern = "x" * 5 # 重復(fù)的魅力,‘x’五連發(fā)!
解釋:乘號(hào)在這里不是數(shù)學(xué)運(yùn)算,而是字符串復(fù)制的快捷方式。
15. 字符串右對(duì)齊
aligned_str = "Python".rjust(10, '-') # 對(duì)齊大師,右邊留空位,用‘-’填充。
解釋:.rjust(width[, fillchar]) 方法使字符串右對(duì)齊,并在左側(cè)填充指定字符直到達(dá)到指定寬度。
高級(jí)用法
16. 高級(jí)字符串分割與組合:正則表達(dá)式
使用正則表達(dá)式可以實(shí)現(xiàn)更復(fù)雜的文本分割。
import re
# 分割包含數(shù)字和非數(shù)字的字符串
parts = re.split(r'(\d+)', "Python3.9 is fun!")
解釋:正則表達(dá)式 r'(\d+)' 匹配一個(gè)或多個(gè)數(shù)字,括號(hào)表示捕獲組,re.split() 會(huì)保留這些匹配項(xiàng),返回的結(jié)果中,匹配到的部分也會(huì)包括在內(nèi)。
17. 利用列表推導(dǎo)生成字符串
當(dāng)你需要基于條件生成字符串時(shí),列表推導(dǎo)非常有用。
# 生成一個(gè)字符串,僅包含原字符串中的大寫字母
upper_only = ''.join([c for c in "Hello World!" if c.isupper()])
解釋:通過列表推導(dǎo)篩選出大寫字母,然后用 join() 合并回字符串。
18. 字符串的編碼與解碼
了解字符串與字節(jié)之間的轉(zhuǎn)換至關(guān)重要。
encoded = "你好".encode('utf-8') # 編碼為UTF-8字節(jié)
decoded = encoded.decode('utf-8') # 解碼回字符串
解釋:字符串通過 .encode() 方法可以轉(zhuǎn)換為字節(jié)序列,而字節(jié)序列通過 .decode() 方法可以轉(zhuǎn)換回字符串。
19. 使用zip函數(shù)合并多個(gè)字符串
當(dāng)有多個(gè)列表或字符串需要對(duì)應(yīng)位置合并時(shí),zip函數(shù)大顯身手。
str1 = "ABC"
str2 = "123"
merged = ''.join(a + b for a, b in zip(str1, str2))
解釋:zip函數(shù)將兩個(gè)字符串配對(duì),然后通過列表推導(dǎo)結(jié)合每個(gè)配對(duì)的字符,最后用 join 連接成一個(gè)字符串。
20. 查找所有子字符串出現(xiàn)的位置
如果想知道一個(gè)子字符串在另一個(gè)字符串中所有出現(xiàn)的位置,可以這樣做:
# 查找所有'is'的位置
positions = [m.start() for m in re.finditer('is', 'This is a test. Is it?')]
解釋:re.finditer() 返回一個(gè)迭代器,遍歷所有匹配項(xiàng),.start() 獲取每個(gè)匹配的起始索引。