我有一根这样的绳子:

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"'

08-19 21:00