如何用正则表达式移除两个小写字母间的空格?(OCR文本清洗)
解决方法
你的问题出在使用str.replace()会替换所有相同的空格,而不是仅替换正则匹配到的、位于两个小写字母之间的空格。正确做法是用re.sub()直接在匹配位置完成替换。
可行代码
import re noisy = "Hel lo, my na me is Mark." # 匹配小写字母+空格+小写字母的组合,捕获前后的小写字母 clean = re.sub(r'([a-z])\s([a-z])', r'\1\2', noisy) print(clean) # 输出: Hello, my name is Mark.
代码说明
- 正则表达式
r'([a-z])\s([a-z])':([a-z]):捕获第一个小写字母,作为分组1\s:匹配中间的空格([a-z]):捕获第二个小写字母,作为分组2
re.sub()会把所有匹配到的该模式,替换为\1\2,也就是将两个捕获的小写字母直接拼接,去掉中间的空格。- 如果需要兼容瑞典语特殊小写字母(如å、ä、ö),可将正则修改为
r'([a-zåäö])\s([a-zåäö])',确保这些字符也能被正确匹配。
内容的提问来源于stack exchange,提问作者steca
相关产品推荐
相关产品推荐

