【发布时间】:2015-03-10 06:56:03
【问题描述】:
我有一个字符串
a = "hello i am stackoverflow.com user +-"
现在我想转换字符串中除引号和空格之外的转义字符。所以我的预期输出是:
a = "hello i am stackoverflow\.com user \+\-"
到目前为止,我所做的是使用
查找字符串中除空格和双引号之外的所有特殊字符re.findall(r'[^\w" ]',a)
现在,一旦我找到了所有必需的特殊字符,我就想更新字符串。我什至尝试过re.sub,但它替换了特殊字符。反正我能做到吗?
【问题讨论】:
-
除了答案之外,像
re.sub(r'([\.+-])', r'\\\1', a)这样简单的东西也会产生您预期的输出。 -
@jedwards Dang,我为什么没想到...你为什么不反转正则表达式并将其作为答案发布?
-
@thefourtheye 仅适用于上述输入。检查我的第二个答案..
-
@AvinashRaj 你的意思是说
re.sub(r'([^\w" ])', r'\\\1', a)行不通? -
这是个好主意。起初我认为 re.escape 只会逃避一些特定的角色。但它会转义所有非单词字符。