首页 > 解决方案 > Python正则表达式删除一些标点符号周围的空格

问题描述

这些是示例:

s1 = "hello 11 : 23 pm" -->"hello 11:23 pm"

s2 = "hello 10, 000 dollars"-->"hello 10,000 dollars"

s3 = "hello 10. 213 percent"-->"hello 10.213 percent"

s4 = "hello 11 : 23 pm, 10, 000 dollars, 10. 213 percent"-->"hello 11:23 pm, 10,000 dollars, 10.213 percent"

如何使用正则表达式将左侧字符串转换为右侧字符串?

标签: pythonregex

解决方案


您可以使用以下方法将任何前后跟一个数字(中间有一些空格)的标点符号替换为它本身(不带空格)re.sub

import re

s1 = "hello 11 : 23 pm" 
s2 = "hello 10, 000 dollars"
s3 = "hello 10. 213 percent" 
s4 = "hello 11 : 23 pm, 10, 000 dollars, 10. 213 percent"

for s in [s1, s2, s3, s4]:
    new = re.sub(r'(?<=\d)\s*([:,.])\s*(?=\d)', r'\1', s)
    print(new)

输出:

hello 11:23 pm
hello 10,000 dollars
hello 10.213 percent
hello 11:23 pm, 10,000 dollars, 10.213 percent

推荐阅读