Python 3正则表达式:如何移除字符串中的u[0-9]{4}?
问题解决方法
为什么原代码不生效?
字符串的replace()方法不支持正则表达式,它只会匹配完全一致的固定文本。你写的r"u[0-9]{4}"会被当作普通字符串去匹配,原字符串里没有这个完全相同的子串,所以替换后还是原字符串。
正确实现方式
要通过正则表达式替换,需要使用Python标准库的re模块,用re.sub()函数完成:
import re s = "aaau0004bbbbu0001" # 用正则匹配"u"开头加4位数字的子串,替换为空 result = re.sub(r"u[0-9]{4}", "", s) print(result) # 输出:aaabbbb
特殊情况说明
如果你的原字符串里是实际的Unicode控制字符(比如\u0004是代表结束传输的控制符,而不是文本"u0004"),那正则需要调整为匹配对应字符,代码如下:
import re s = "aaa\u0004bbbb\u0001" # 匹配所有Unicode控制字符(范围\u0000-\u001F) result = re.sub(r"[\u0000-\u001F]", "", s) print(result) # 输出:aaabbbb
内容的提问来源于stack exchange,提问作者Davy
相关产品推荐
相关产品推荐

