PYTHON基础技能 – 15个Python高效字符串处理技巧

释放双眼,带上耳机,听听看~!

字符串处理是一项基础且频繁使用的技能。掌握高效的字符串操作不仅能提升代码的可读性和执行效率,还能在解决复杂问题时游刃有余。下面,让我们通过15个实用技巧,逐步探索Python字符串处理的奥秘。

1. 字符串拼接

技巧 : 使用

1
join()

而非

1
+

1
+=


1
<em>#&nbsp;使用join拼接列表中的字符串</em><br>strings&nbsp;=&nbsp;&#091;"Hello",&nbsp;"World"]<br>result&nbsp;=&nbsp;"&nbsp;".join(strings)<br>print(result)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;Hello&nbsp;World</em>

解释 :

1
join()

方法更适用于大量字符串拼接,性能优于多次使用

1
+

1
+=

2. 快速计数字符

技巧 : 使用

1
count()

方法。


1
text&nbsp;=&nbsp;"hello&nbsp;world"<br>char_count&nbsp;=&nbsp;text.count("l")<br>print(char_count)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;3</em>

解释 :

1
count()

轻松统计特定字符在字符串中出现的次数。

3. 分割字符串

技巧 : 使用

1
split()


1
line&nbsp;=&nbsp;"name:John&nbsp;age:30"<br>pairs&nbsp;=&nbsp;line.split("&nbsp;")<br>name,&nbsp;age&nbsp;=&nbsp;pairs&#091;0].split(":")&#091;1],&nbsp;pairs&#091;1].split(":")&#091;1]<br>print(name,&nbsp;age)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;John&nbsp;30</em>

解释 :

1
split()

根据分隔符将字符串分割成列表,灵活运用可以高效解析数据。

4. 切片操作

技巧 : 利用切片快速提取子串。


1
s&nbsp;=&nbsp;"Python"<br>slice_s&nbsp;=&nbsp;s&#091;0:2]&nbsp;&nbsp;<em>#&nbsp;前两个字符</em><br>reverse_s&nbsp;=&nbsp;s&#091;::-1]&nbsp;&nbsp;<em>#&nbsp;反转字符串</em><br>print(slice_s,&nbsp;reverse_s)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;Py&nbsp;ynohP</em>

解释 : 切片

1
[start:end:step]

是提取字符串子串的强大工具,负数索引用于从字符串末尾开始计数。

5. 查找子串

技巧 : 使用

1
find()

1
index()


1
text&nbsp;=&nbsp;"Hello,&nbsp;welcome&nbsp;to&nbsp;Python."<br>pos&nbsp;=&nbsp;text.find("welcome")<br>print(pos)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;7</em>

解释 :

1
find()

返回子串第一次出现的位置,未找到则返回-1;

1
index()

类似,但未找到会抛出异常。

6. 大小写转换

技巧 : 使用

1
upper()

,

1
lower()

,

1
capitalize()

等方法。


1
text&nbsp;=&nbsp;"hello&nbsp;WORLD"<br>print(text.upper())&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;HELLO&nbsp;WORLD</em><br>print(text.lower())&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;hello&nbsp;world</em><br>print(text.capitalize())&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;Hello&nbsp;world</em>

解释 : 这些方法在处理文本格式时非常有用,如标题化、全大写或全小写转换。

7. 去除字符串两端空格

技巧 : 使用

1
strip()

,

1
rstrip()

,

1
lstrip()


1
s&nbsp;=&nbsp;"&nbsp;&nbsp;&nbsp;Hello&nbsp;World!&nbsp;&nbsp;&nbsp;"<br>print(s.strip())&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;Hello&nbsp;World!</em>

解释 :

1
strip()

移除字符串首尾的空白字符(包括空格、换行符等),

1
rstrip()

1
lstrip()

分别仅移除右侧和左侧的空白字符。

8. 格式化字符串

技巧 : 使用f-string(Python 3.6+)。


1
name&nbsp;=&nbsp;"Alice"<br>age&nbsp;=&nbsp;30<br>formatted&nbsp;=&nbsp;f"My&nbsp;name&nbsp;is&nbsp;{name}&nbsp;and&nbsp;I&nbsp;am&nbsp;{age}&nbsp;years&nbsp;old."<br>print(formatted)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;My&nbsp;name&nbsp;is&nbsp;Alice&nbsp;and&nbsp;I&nbsp;am&nbsp;30&nbsp;years&nbsp;old.</em>

解释 : f-string提供了简洁、直观的字符串格式化方式,直接在字符串中嵌入表达式。

9. 使用列表推导式处理字符串

技巧 : 将字符串转换为列表进行操作。


1
s&nbsp;=&nbsp;"hello"<br>upper_list&nbsp;=&nbsp;&#091;c.upper()&nbsp;for&nbsp;c&nbsp;in&nbsp;s]<br>print(''.join(upper_list))&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;HELLO</em>

解释 : 列表推导式结合

1
join()

方法,可以实现字符串字符的批量操作。

10. 替换字符串

技巧 : 使用

1
replace()


1
text&nbsp;=&nbsp;"hello,&nbsp;hello,&nbsp;world!"<br>new_text&nbsp;=&nbsp;text.replace("hello",&nbsp;"hi",&nbsp;2)&nbsp;&nbsp;<em>#&nbsp;替换前两个"hello"</em><br>print(new_text)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;hi,&nbsp;hi,&nbsp;world!</em>

解释 :

1
replace()

方法可以替换字符串中的指定部分,第三个参数限制替换次数。

11. 字符串的长度

技巧 : 使用

1
len()

函数。


1
s&nbsp;=&nbsp;"Python"<br>length&nbsp;=&nbsp;len(s)<br>print(length)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;6</em>

解释 : 简单但重要,

1
len()

函数返回字符串长度。

12. 检查字符串开头或结尾

技巧 : 使用

1
startswith()

,

1
endswith()


1
filename&nbsp;=&nbsp;"example.txt"<br>if&nbsp;filename.endswith(".txt"):<br>&nbsp;&nbsp;&nbsp;&nbsp;print("It's&nbsp;a&nbsp;text&nbsp;file.")

解释 : 这两个方法检查字符串是否以特定前缀或后缀开始或结束。

13. 使用正则表达式

技巧 : 引入

1
re

模块进行复杂模式匹配。


1
import&nbsp;re<br>text&nbsp;=&nbsp;"My&nbsp;email&nbsp;is&nbsp;example@example.com"<br>email&nbsp;=&nbsp;re.search(r'\b&#091;A-Za-z0-9._%+-]+@&#091;A-Za-z0-9.-]+\.&#091;A-Z|a-z]{2,}\b',&nbsp;text)<br>if&nbsp;email:<br>&nbsp;&nbsp;&nbsp;&nbsp;print(email.group())&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;example@example.com</em>

解释 : 正则表达式是强大的文本处理工具,适用于复杂的字符串匹配和提取。

14. 遍历字符串

技巧 : 直接遍历字符串。


1
s&nbsp;=&nbsp;"Python"<br>for&nbsp;char&nbsp;in&nbsp;s:<br>&nbsp;&nbsp;&nbsp;&nbsp;print(char)

解释 : 字符串本身就是序列,可以直接遍历,适合字符级操作。

15. 字符串不变性

技巧 : 注意字符串的不可变性。


1
s&nbsp;=&nbsp;"Python"<br>try:<br>&nbsp;&nbsp;&nbsp;&nbsp;s&#091;0]&nbsp;=&nbsp;"J"&nbsp;&nbsp;<em>#&nbsp;这会引发错误</em><br>except&nbsp;TypeError&nbsp;as&nbsp;e:<br>&nbsp;&nbsp;&nbsp;&nbsp;print(e)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;'str'&nbsp;object&nbsp;does&nbsp;not&nbsp;support&nbsp;item&nbsp;assignment</em>

解释 : 字符串一旦创建就不可更改,尝试修改会触发错误,应使用上述方法间接实现修改效果。


高级和实用处理技巧

16. 利用
1
join()

和列表生成式优化字符串连接

技巧 : 当需要连接大量字符串时,避免使用循环内的字符串相加。


1
words&nbsp;=&nbsp;&#091;'Hello',&nbsp;'from',&nbsp;'Python']<br>joined&nbsp;=&nbsp;''.join(&#091;word&nbsp;+&nbsp;'&nbsp;'&nbsp;for&nbsp;word&nbsp;in&nbsp;words&#091;:-1]]&nbsp;+&nbsp;&#091;words&#091;-1]])<br>print(joined)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;Hello&nbsp;from&nbsp;Python</em>

解释 : 列表生成式配合

1
join()

能有效避免不必要的字符串重建,提高性能。

17. 使用
1
format()

方法进行格式化

尽管f-string更为现代和便捷,但在兼容旧版本Python或需要更复杂格式控制时,

1
format()

依然强大。


1
template&nbsp;=&nbsp;"Name:&nbsp;{},&nbsp;Age:&nbsp;{}"<br>filled&nbsp;=&nbsp;template.format("Alice",&nbsp;30)<br>print(filled)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;Name:&nbsp;Alice,&nbsp;Age:&nbsp;30</em>

解释 :

1
{}

作为占位符,

1
format()

方法内填入对应值。

18. 字符串的分割与合并的高级应用

技巧 : 结合

1
split()

1
itertools.zip_longest

处理交错的数据。


1
import&nbsp;itertools<br>lines&nbsp;=&nbsp;"line1\nline2\nline3"<br>parts&nbsp;=&nbsp;lines.split("\n")<br>merged&nbsp;=&nbsp;&#091;''.join(pair)&nbsp;for&nbsp;pair&nbsp;in&nbsp;itertools.zip_longest(*&#091;parts&#091;i::2]&nbsp;for&nbsp;i&nbsp;in&nbsp;range(2)])]<br>print(merged)&nbsp;&nbsp;<em>#&nbsp;如果原字符串是偶数行,这将保持对齐</em>

解释 : 此技巧在处理行列交错的数据时特别有用,如表格数据的处理。

19. 字符串的编码与解码

技巧 : 理解并使用

1
encode()

1
decode()

处理非ASCII字符。


1
utf8_string&nbsp;=&nbsp;"你好,世界!"<br>encoded&nbsp;=&nbsp;utf8_string.encode('utf-8')<br>decoded&nbsp;=&nbsp;encoded.decode('utf-8')<br>print(decoded)&nbsp;&nbsp;<em>#&nbsp;输出:&nbsp;你好,世界!</em>

解释 : 在处理国际化文本时,正确编码和解码字符串至关重要。

20. 字符串的内建方法深入

技巧 : 探索

1
title()

,

1
swapcase()

,

1
isalnum()

,

1
isalpha()

等方法的使用。


1
s&nbsp;=&nbsp;"hello&nbsp;WORLD&nbsp;123"<br>title_s&nbsp;=&nbsp;s.title()&nbsp;&nbsp;<em>#&nbsp;首字母大写</em><br>swapcase_s&nbsp;=&nbsp;s.swapcase()&nbsp;&nbsp;<em>#&nbsp;大小写互换</em><br>alnum_check&nbsp;=&nbsp;s.isalnum()&nbsp;&nbsp;<em>#&nbsp;是否全部由字母和数字组成</em><br>alpha_check&nbsp;=&nbsp;s.isalpha()&nbsp;&nbsp;<em>#&nbsp;是否全部由字母组成</em><br>print(title_s,&nbsp;swapcase_s,&nbsp;alnum_check,&nbsp;alpha_check)

解释 : 这些方法提供了快速检查和格式化字符串的途径。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

安全运维之道:发现、解决问题的有效闭环

2024-4-14 20:59:36

安全运维

稳定性建设 – 架构优化的关键策略

2025-2-11 17:15:56

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索