将单个字符与它们之间的单个空格组合在一起

时间:2015-10-16 23:43:20

标签: python regex

我希望将单个字符组合在一起,它们之间只有一个空格。

例如:

 a b c       -->   abc         [all combined together]
 ab c d ef   -->   ab cd ef    [just combine the middle 'c d'
 foo bar    -->   foo bar    [nothing between consecutive words]

我可以使用正则表达式re.findall(r'(([A-z] ){2,})' object)捕获此术语。但是,我不确定如何设置替换部件。

我能想到的唯一方法分三个阶段:

  1. 使用re.findall()函数搜索字词。
  2. 将捕获的术语组合在一起。
  3. 然后用re.sub()替换。
  4. 然而,这看起来有点混乱,而且由于我使用了超过10亿的记录,如果可能的话,更愿意只做一个正则表达式语句。

2 个答案:

答案 0 :(得分:5)

寻找两个单字母单词,第二个单词作为前瞻,以便下一步检查:

>>> re.sub(r"\b(\w) (?=\w\b)", r"\1", "ab c d e and f")
'ab cde and f'

答案 1 :(得分:0)

我认为你可以尝试使用正则表达式:

(?<=\b\w)\s(?=\w\b)

DEMO

然后补充匹配的空格。