我想通过使用正则表达式在字符串中输入错字来取消联接,并在匹配的表达式之间插入空格。

我尝试了类似问题的解决方案...但是它对我不起作用-(Insert space between characters regex);解决方案-在re.sub中将替换字符串用作'\ 1 \ 2'。

import re

corpus = '''
This is my corpus1a.I am looking to convert it into a 2corpus 2b.
'''

clean = re.compile('\.[^(\d,\s)]')
corpus = re.sub(clean,' ', corpus)

clean2 = re.compile('\d+[^(\d,\s,\.)]')
corpus = re.sub(clean2,'\1 \2', corpus)


预期的输出:

This is my corpus 1 a. I am looking to convert it into a 2 corpus 2 b.

最佳答案

您需要将捕获组括号放在与您要复制到结果中的每个字符串匹配的模式周围。

+之后也无需使用\d。您只需要匹配数字的最后一位。

clean = re.compile(r'(\d)([^\d,\s])')
corpus = re.sub(clean, r'\1 \2', corpus)


DEMO

08-05 14:06