如何在数据丢失的情况下保持ReqEX输出的长度稳定,python2.7

以下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)
点赞