我如何使用python" re"模块用一个空字符串替换一个单词,即'co'
,即给定文本中的''
,仅在以下情况下:
即,
# word is not the final word in the text but there's a space at beginning, and then another space at the end of the word
txt = 'A co is mine'
txt_after_replace = 'A is mine'
txt = 'A column is mine'
txt_ater_replace = 'A column is mine'
# word is the end of the text and there's a space before the word
txt = 'my co'
txt_after_replace = 'my'
txt = 'my column'
txt_after_replace = 'my column'
如果我这样做:txt.replace(' co', '')
这两种情况将失败:txt = 'my column', txt_ater_replace = 'A column is mine'
。因为它不会在单词之后检查文本结尾,也不会检查文本后面文本中的空格。
我认为re.sub模块会在这里解决,但我不确定如何。
这适用于任何一般词,即在这种情况下为'co'
。
答案 0 :(得分:1)
您可以使用alternation使用以下正则表达式匹配这两个条件。
正则表达式: (?:\sco\s|\sco$)
<强>解释强>
\sco\s
匹配前面的co
并以空格成功。
\sco$
匹配co
,最后是空格。
<强> Regex101 Demo 强>
在python中:
import re
str = "coworker in my company are not so co operative. silly co"
res = re.sub(r'(?:\sco\s|\sco$)', ' ', str)
print(res)
结果: coworker in my company are not so operative. silly
的 Ideone Demo 强>
答案 1 :(得分:0)
您可以使用lookahead正则表达式
\sco(?=$|\s)
说明:
space
跟随co
,然后断言co
后面的内容必须是
space
或end of text
python代码
import re
txt = 'A co is mine, A column is mine, my column, my co'
new_txt = re.sub('\sco(?=$|\s)', '', txt)
# 'A is mine, A column is mine, my column, my'