Python正则表达式,修复数字间距

时间:2016-07-28 21:53:06

标签: python regex

我有一些格式错误的段落。我需要在数字之间替换空格。例如:

6. 7 should be 6.7

我已尝试使用以下表达式来获取有问题的空格,但它选择了6.

(?:\d\.)\s(?=\d+)

任何指针都会有所帮助。

2 个答案:

答案 0 :(得分:2)

>>> re.sub(r'(\d+\.)\s+(\d+)',r'\1\2','62. 7; 8.5; 6. 912')
'62.7; 8.5; 6.912'

答案 1 :(得分:1)

您可以使用lookbehind:

{
  "entries": [
    {"url":"s3://b1-bucket/f1/20160728/file1.json", "mandatory":true},
    {"url":"s3://b1-bucket/f1/20160728/file2.json", "mandatory":true},
    {"url":"s3://b1-bucket/f1/20160729/file1.json", "mandatory":true},
    {"url":"s3://b1-bucket/f2/20160728/file1.json", "mandatory":true}
  ]
}

请参阅regex demo here。或者,使用捕获组,但稍后用(?<=\d\.)\s+(?=\d+) ^^^ 反向引用替换:

\1

请参阅another regex demo

注意:如果这些编号的项目符号位于行的开头,如果您使用{{{},请使用与行开头匹配的(\d\.)\s+(?=\d+) 锚点1}}标记,您可以在^之后添加re.M以匹配0+空格:

[ \t]*

请参阅another demo

^

请参阅Python demo