2015-10-16 54 views
3

我期待将单个字符之间的单个空格结合在一起。将单个字符与它们之间的单个空格结合在一起

例如:

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()做替换。

但是,这看起来有点乱,而且我使用了10多万条记录,如果可能的话,我们宁愿只做一条正则表达式语句。

+0

所以是:删除两个字符之间的空间(如'˚FB')。但保存两个单词之间的空格(如'foo bar')。对? –

+1

@KevinGuan--是的,它只是在单个字符之间[基本上,我正在寻找将缩略词组合在一起...将例如'a k a'转换为'aka'] – kyrenia

+0

好的,也许将这些解释添加到您的问题中? :) –

回答

5

查找两个单字母的单词,第二个为先行,以便它可以在下一个被检查:

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

我想你可以用正则表达式尝试:

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

DEMO

然后replece匹配的空间什么也没有。

相关问题