使用re.sub将文本替换为匹配到的内容

2022-05-04  本文已影响0人  公输昊少

文本处理中,经常会碰到需要将某些指定字符替换掉,而保留其余部分的情况,比如:

{H}ate{BERT}: Retraining {BERT} for Abusive Language Detection in {E}nglish

上述文本中的{}是LaTeX中的特殊字符,在整个句子中并没有什么实际含义,反而会影响我对文本的后续处理,所以我需要把上述文本中的花括号{}去掉。然而,其余的文本中,{}内包着的可能是公式或者其他的特殊字符,又或者有些{}在文本中是有其特定含义的,我不希望把这些{}也替换掉。因而不能简单地使用replace()来替换。
用正则的话,可以这样来处理:

import re
s = "{H}ate{BERT}: Retraining {BERT} for Abusive Language Detection in {E}nglish"
pattern = re.compile(r'{([A-Za-z\-]+)}')
python(re.sub(pattern, r'\1', s))

输出结果为:

HateBERT: Retraining BERT for Abusive Language Detection in English

这里re.sub()的第二个参数是替换的目标,用\1来表示pattern的正则表达式中第一个小括号括住的部分,记住第二个参数的字符串前面要加r
挺长时间之前这样用过,但是再次用到的时候忘了具体怎么用,百度也没找到想要的,最后还是在stackoverflow找打了答案,在这里记录一下。

上一篇下一篇

猜你喜欢

热点阅读