如何使用Python re库删除以字母或数字开头且以"PM"结尾的子串
用Python re库删除指定格式乱码的实现方法
实现逻辑
- 目标乱码符合「以英文字母/数字开头、以PM结尾」的特征,使用非贪婪匹配规则避免误吞正常内容。
- 直接调用
re.sub方法将匹配到的乱码子串替换为空字符串即可完成清理。
正则表达式说明
使用的正则规则为 r'[a-zA-Z0-9].*?PM',各部分含义:
[a-zA-Z0-9]:匹配任意大小写英文字母或阿拉伯数字,对应乱码的起始特征.*?:非贪婪匹配任意数量的字符(默认不匹配换行符),确保匹配到最近的一个PM就停止,不会过度匹配PM:匹配乱码的固定结尾标识
完整代码示例
import re def remove_pm_garbage(text: str) -> str: pattern = re.compile(r'[a-zA-Z0-9].*?PM') return pattern.sub('', text) # 测试用例 raw_text = """iSD08LXjpg2021330401PM大陸不可以給60歲以上人士打香港專找60歲以上人士去打,做白老鼠 日本與美國比還是很不錯的USA死亡才多呢日媒體報道jpg2021321056PM""" processed_text = remove_pm_garbage(raw_text) print(processed_text)
补充说明
如果你的乱码存在跨换行的场景,可以在编译正则时添加re.DOTALL参数,修改为:pattern = re.compile(r'[a-zA-Z0-9].*?PM', re.DOTALL)
此时.会匹配换行符,可处理跨多行的乱码。
内容的提问来源于stack exchange,提问作者Haorui He
相关产品推荐
相关产品推荐

