我正在清理一些从PDF中提取的文本分析数据。我注意到其中一个错误是以"y"结尾的单词中的奇怪间距。具体来说,最后一个 y 与单词之间用空格断开:theor y
。我正在尝试使用re.sub
来识别这些实例,然后折叠空间。
我已经能够编写我认为是一个很好的正则表达式字符串(见 https://regex101.com/r/M1jpe6/5),但我没有得到我期望的结果。我怀疑我错过了re.sub
方法的一些东西。
这是我的玩具代码。
import re
string = 'this is my theor y of dance'
regex_y = r'bw*b(sy)b'
new_string = re.sub(regex_y, 'y', string)
print(new_string)
我希望从上面打印的是
this is my theory of dance
但它实际打印的是
this is my y of dance
由于我的正则表达式中唯一的捕获组是(sy)
,我希望用y
替换y
。相反,很明显,我正在匹配更大的字符串theor y
然后用y
替换整个东西。
为什么当我只捕获(sy)
时会发生这种情况?如何编写我的re.sub
字符串,使其按预期工作?
你的例子有点做作,但如果你想在悬空y
字符之前删除空格,我会使用这个:
string = 'this is my theor y of dance'
string = re.sub(r'bs+yb', 'y', string)
print(string)
this is my theory of dance
在此处使用捕获组的问题在于,您希望显示整个输入句子,并进行一些修改。 使用捕获组方法时,需要匹配和捕获整个字符串。