我有一根这样的绳子:
a = "\"java jobs in delhi\" delhi"
我想用“”代替德里。但只有德里在双引号之外因此,输出应该如下所示:
"\"java jobs in delhi\""
字符串是示例字符串。子字符串不一定是“德里”。要替换的子字符串可以出现在输入字符串中的任何位置。字符串中引用和未引用部分的顺序和数量不是固定的
.replace()
替换德里的两个子字符串我也不能使用rstrip
,因为它不一定出现在字符串的末尾我该怎么做? 最佳答案
使用re.sub
>>> a = "\"java jobs in delhi\" delhi"
>>> re.sub(r'\bdelhi\b(?=(?:"[^"]*"|[^"])*$)', r'', a)
'"java jobs in delhi" '
>>> re.sub(r'\bdelhi\b(?=(?:"[^"]*"|[^"])*$)', r'', a).strip()
'"java jobs in delhi"'
或者
>>> re.sub(r'("[^"]*")|delhi', lambda m: m.group(1) if m.group(1) else "", a)
'"java jobs in delhi" '
>>> re.sub(r'("[^"]*")|delhi', lambda m: m.group(1) if m.group(1) else "", a).strip()
'"java jobs in delhi"'