我有一句话:“这不是一个好句子”我试图在单词not之后插入一个下划线(_
)。我现在使用的代码是
i = "this is not a good sentence"
i = re.sub(r'(not)', r'\1_', i)
此输出:“这不是一个好句子”
我希望它输出:“这不是一个好句子”
如果没有句子移位我怎么分?我希望“不”和“ a ”由下划线连接,但现在有一个空格。
答案 0 :(得分:5)
您根本不需要RegEx,只需将not
替换为not_
i = "this is not a good sentence"
i = i.replace("not ", "not_")
答案 1 :(得分:2)
你快到了。您只需要使正则表达式使用空格而不将它们包含在捕获组中。这可以通过添加\s*
:
In [8]: re.sub(r'\b(not)\s*\b', r'\1_', i)
Out[8]: 'this is not_a good sentence'
请注意我是如何使用字边界(\b
)来确保not
永远不会在单词的中间匹配。
另一种方法是使用positive lookbehind:
In [17]: re.sub(r'(?<=\bnot\b)\s*', r'_', i)
Out[17]: 'this is not_a good sentence'
答案 2 :(得分:1)
如果确实想要使用正则表达式:
i=re.sub(r'(not)\s?', r'\1_', i)
或指定字边界以确保其与not
而非notion
或knot
匹配:
i=re.sub(r'(\bnot\b)\s?', r'\1_', i)
答案 3 :(得分:0)
i = "this is not a good sentence"
i = re.sub(r'(not) +', r'\1_', i)
只需在查找中包含空格。
答案 4 :(得分:0)
只需在匹配的正则表达式中添加一个空格:
i = "this is not a good sentence"
i = re.sub(r'(not) ', r'\1_', i)