网易首页 > 网易号 > 正文 申请入驻

Python:字符串的进阶技巧

0
分享至

字符串的基础操作包括索引、切片、拼接等,而在更复杂的场景中,我们往往需要借助一些进阶技巧来实现高效的数据处理与文本分析。

一、字符串与其它容器结构互操作

字符串和列表、集合、字典之间常常需要互相转换。

1、字符串转

s = "hello"
lst = list(s)
print(lst)  # ['h', 'e', 'l', 'l', 'o']

2、转字符串

words = ["Python", "3.12"]
s = " ".join(words)
print(s)  # Python 3.12

3、字符串转(自动去重)

s = "banana"
print(set(s))  # {'b', 'a', 'n'}

4、键值对字符串转

pairs = ["a=1", "b=2", "c=3"]
d = dict(p.split("=") for p in pairs)
print(d)  # {'a': '1', 'b': '2', 'c': '3'}

这种互操作常见于数据清洗和配置解析。

二、利用生成器表达式

是一种惰性迭代方式,比列表推导更省内存,适合与 join() 等操作搭配。

1、过滤字符

s = "hello123world"
letters = "".join(ch for ch in s if ch.isalpha())
print(letters)  # helloworld

2、转换字符

s = "abc"
upper_s = "".join(ch.upper() for ch in s)
print(upper_s)  # ABC

3、编码映射

s = "Python"
shift = "".join(chr(ord(c) + 1) for c in s)  # 字母偏移
print(shift)  # Qzuipo

在处理大规模文本时,生成器表达式更高效。

三、字符映射与批量替换

当需要大规模替换多个字符时,str.maketrans() 与 translate() 是最佳选择。

# 构造映射表:将 - 去掉,将 _ 替换为空格
table = str.maketrans({"-": "", "_": " "})

s = "data-set_v1"
print(s.translate(table))  # dataset v1

相比多次调用 replace(),这种方式更高效。

四、字符串排序与唯一化

有时需要对字符串内容进行排序或去重。

1、字符排序

s = "banana"
print("".join(sorted(s)))  # aaabnn

2、去重并保序

s = "banana"
unique = "".join(dict.fromkeys(s))
print(unique)  # ban

这种方法常用于文本分析、关键词去重等场景。

五、格式化的高级技巧

除了基础的 format() 方法,还可使用 进行对齐与数字进制转换。

1、对齐与填充

print(f"{'hi':<5}")   # hi   左对齐
print(f"{'hi':>5}")   # hi 右对齐
print(f"{'hi':^5}")   # hi   居中

2、数字进制

num = 255
print(f"{num:b}")   # 11111111 二进制
print(f"{num:o}")   # 377       八进制
print(f"{num:x}")   # ff        十六进制

这在日志输出、表格打印时非常实用。

六、正则表达式处理文本

模块提供了强大的字符串处理功能,适合复杂匹配与替换。

import re
s = "apple, banana; cherry"

# 按多种分隔符切分
words = re.split(r"[,;]\s*", s)
print(words)  # ['apple', 'banana', 'cherry']

# 替换所有数字为 #
s = "user123id456"
print(re.sub(r"\d", "#", s))  # user###id###

是文本清洗与模式匹配的必备工具。

七、多语言与大小写比较

大小写比较时,casefold() 比 lower() 更彻底,适合国际化场景。

print("Straße".lower())     # straße
print("Straße".casefold())  # strasse

print("straße" == "Strasse".casefold())  # True

这对多语言搜索和规范化文本尤为重要。

八、性能优化技巧

1、避免频繁拼接

# ❌ 效率低
s = ""
for i in range(10000):
    s += str(i)

s = "".join(str(i) for i in range(10000))

2、用 io.StringIO 构建大字符串

from io import StringIO

buffer = StringIO()
for i in range(5):
    buffer.write(str(i))
print(buffer.getvalue())  # 01234

建议:小规模拼接可直接用 +,大规模拼接优先 join() 或 StringIO。

小结

数据互操作:字符串与列表/集合/字典相互转换,便于数据清洗

生成器表达式:惰性计算,节省内存,适合与 join() 搭配

字符映射:maketrans() + translate() 高效批量替换

排序与去重:sorted() 排序,dict.fromkeys() 保序去重

格式化:f-string 可实现对齐、填充、进制转换

正则表达式:re 模块支持复杂匹配与替换

国际化:casefold() 适合多语言大小写比较

性能优化:避免 += 拼接,推荐 join() 或 StringIO

点赞有美意,赞赏是鼓励

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
近10年学术不端名单:协和“4+4”董袭莹、“首席科学家”郭伟、“不知知网”翟天临

近10年学术不端名单:协和“4+4”董袭莹、“首席科学家”郭伟、“不知知网”翟天临

网易新闻出品
2026-05-09 18:38:13
病毒不在中国爆发,外媒全哑火了!外国网友:怎么还没人责怪荷兰

病毒不在中国爆发,外媒全哑火了!外国网友:怎么还没人责怪荷兰

混沌录
2026-05-09 14:54:10
美军刚射战斧,不到24小时,解放军直接回击,亮出南海最硬底牌

美军刚射战斧,不到24小时,解放军直接回击,亮出南海最硬底牌

云上乌托邦
2026-05-09 14:53:05
中国境内唯一一支外国军队,赶了50年赶不走,至今仍驻扎在北京

中国境内唯一一支外国军队,赶了50年赶不走,至今仍驻扎在北京

可乐爱微笑
2026-05-07 02:35:38
保真吗?六台用AI制作巴尔韦德和楚阿梅尼更衣室打架视频

保真吗?六台用AI制作巴尔韦德和楚阿梅尼更衣室打架视频

懂球帝
2026-05-09 16:43:08
魏凤和与李尚福案实质曝光,军方评论员署名究竟代表什么

魏凤和与李尚福案实质曝光,军方评论员署名究竟代表什么

健身狂人
2026-05-09 17:33:27
3人去世、2人失业、3人勉力糊口!80后吐槽宿舍8人,评论哭声一片

3人去世、2人失业、3人勉力糊口!80后吐槽宿舍8人,评论哭声一片

火山詩话
2026-05-08 22:09:53
演员文章酒吧开业,继面馆大火之后又一产业,本人透露:初衷是想给自己一个吃饭喝酒的地方;当天其母亲和圈内好友刘威、刘欢等到场助阵

演员文章酒吧开业,继面馆大火之后又一产业,本人透露:初衷是想给自己一个吃饭喝酒的地方;当天其母亲和圈内好友刘威、刘欢等到场助阵

大风新闻
2026-05-09 17:42:09
39岁何洁官宣即将二婚,对象是仨孩子生父刁磊,日子定在5月20日

39岁何洁官宣即将二婚,对象是仨孩子生父刁磊,日子定在5月20日

白面书誏
2026-05-08 16:13:29
“德国驾校”事件:他们自称司机,把女性称为汽车,迷药称为汽油,当受害者因药物而失去意识后,则被称为死猪。

“德国驾校”事件:他们自称司机,把女性称为汽车,迷药称为汽油,当受害者因药物而失去意识后,则被称为死猪。

贴小君
2026-05-09 00:04:11
被官方痛批的“男菩萨”,让多少景区晚节不保?

被官方痛批的“男菩萨”,让多少景区晚节不保?

金错刀
2026-05-08 15:45:01
北京市大兴区政府原党组成员、副区长吴浩接受纪律审查和监察调查

北京市大兴区政府原党组成员、副区长吴浩接受纪律审查和监察调查

环球网资讯
2026-05-09 17:05:08
乌军精准点穴令普京暴怒,泽连斯基批准莫斯科免死区域

乌军精准点穴令普京暴怒,泽连斯基批准莫斯科免死区域

西楼饮月
2026-05-09 16:34:50
昨晚涨到想辞职了

昨晚涨到想辞职了

贩财局
2026-05-09 09:21:00
央视披露浏阳爆炸烟花厂内部画面:几乎所有火药生产线工房门口贴符,希望保佑平安;火药混堆安全隐患突出,电线杆断裂、车辆仅剩骨架

央视披露浏阳爆炸烟花厂内部画面:几乎所有火药生产线工房门口贴符,希望保佑平安;火药混堆安全隐患突出,电线杆断裂、车辆仅剩骨架

山西晚报
2026-05-09 14:45:41
缺钾比缺钙危险?5个信号证明你缺钾了,建议吃这5种食物缓解

缺钾比缺钙危险?5个信号证明你缺钾了,建议吃这5种食物缓解

健康之光
2026-05-07 20:50:03
以游客身份入境,未经许可拍摄!8名中国人在泰国拍短剧被捕

以游客身份入境,未经许可拍摄!8名中国人在泰国拍短剧被捕

大象新闻
2026-05-09 13:54:19
4战国乒吞0-12!法国男团放话:中国队已不可怕 我们将首次赢他们

4战国乒吞0-12!法国男团放话:中国队已不可怕 我们将首次赢他们

风过乡
2026-05-09 17:29:03
5月9日阅兵的俄罗斯,走向垃圾时间

5月9日阅兵的俄罗斯,走向垃圾时间

黔有虎
2026-05-09 16:22:09
梁文峰语出惊人:我雇你来,不是让你完成任务,而是让你创造价值

梁文峰语出惊人:我雇你来,不是让你完成任务,而是让你创造价值

荆楚寰宇文枢
2026-05-08 23:16:21
2026-05-09 20:19:00
MediaTea
MediaTea
专业的数字媒体、新媒体技术
1826文章数 80关注度
往期回顾 全部

科技要闻

美国政府强力下场 苹果英特尔达成代工协议

头条要闻

王菲出新歌首用陕西话唱戏腔 时隔24年与张艺谋再合作

头条要闻

王菲出新歌首用陕西话唱戏腔 时隔24年与张艺谋再合作

体育要闻

成立128年后,这支升班马首夺顶级联赛冠军

娱乐要闻

50岁赵薇脸颊凹陷沧桑得认不出!

财经要闻

存储芯片上演造富潮

汽车要闻

轴距加长/智驾拉满 阿维塔07L定位大五座SUV

态度原创

亲子
旅游
数码
房产
健康

亲子要闻

别被骗,沈阳铁西公布147所合规幼儿园,孩子免费上托咋报销

旅游要闻

告别“打卡式”旅游 境外游客来杭15分钟即可换证自驾

数码要闻

哈趣H3 Ultra Max:原生高刷+高亮+哈曼调音,LCD投影站起来了

房产要闻

低价甩卖!海口这个地标商业,无人接盘!

干细胞能让人“返老还童”吗

无障碍浏览 进入关怀版