以下regExp将匹配前后3个单词(如果存在)
((?:\w+\s+){0,3}My_WORD_HERE(?:\s+\w+){0,3})
输出将是这样的:
word1 word2 word3 My_WORD_HERE word1 word2 word3
要么
word1 word2 My_WORD_HERE word1导致空属性.
如何用“?”等值填充缺失的单词?还是任何符号?
输出就像这样
word1 word2? My_WORD_HERE word1? ?
我将把这个输出用于Weka ML
非常感谢大家
最佳答案 您可以使用lambda执行替换:
import re
s = 'word1 word2 My_WORD_HERE word1'
word = 'My_WORD_HERE'
wnb = 3
pat = r'((?:\w+\s+){{0,{0}}}){1}((?:\s+\w+){{0,{0}}})'.format(wnb, word)
res = re.sub(pat, lambda m:
m.group(1) +
'? '*(wnb-len(m.group(1).split())) +
word + m.group(2) +
' ?'*(wnb-len(m.group(2).split())), s)