Python 多个符号替换不工作

Python 多个符号替换不工作,python,Python,我需要检查字符串中的一些符号,并用空格替换它们。我的代码: string = 'so\bad' symbols = ['•', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '>', '=', '?', '@', '[', ']', '\\', '^', '_', '`', '{', '}', '~', '|', '"', '⌐', '¬'

我需要检查字符串中的一些符号,并用空格替换它们。我的代码:

string = 'so\bad'

symbols = ['•', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '>', '=', '?', '@', '[', ']', '\\', '^', '_', '`', '{', '}', '~', '|', '"', '⌐', '¬', '«', '»', '£', '$', '°', '§', '–', '—']

for symbol in symbols:
    string = string.replace(symbol, ' ')

print string
>> sad
string='so\bad'
符号=['•'、'!'、'“'、'#'、'$'、'%'、'&'、'\'('、')、'*'、'+'、'、'-'、'、':'、';'、'='、'?'、''、'['、']、'\'、'^'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'、'⌐', '¬', '«', '»', '£', '$', '°', '§', '–', '—']
对于符号中的符号:
字符串=字符串。替换(符号“”)
打印字符串
>>悲哀的

为什么它会将a\b替换为空?

这是因为
\b
是ASCII退格字符:

>>> string = 'so\bad'
>>> print string
sad
您可以从中找到它和所有其他转义字符

为了获得预期的行为,请转义反斜杠字符或使用:


您没有替换任何内容“\b”是退格,将光标向左移动一步。

您面临的问题是使用
\
作为转义字符。
\b
是一个特殊字符(退格)

使用前缀为
r
的字符串文字。 对于
r
,反斜杠
\
被视为文字

string = r'so\bad'

请注意,即使您省略了符号列表和符号中的符号:code的
,当您打印字符串时,您总是会得到结果“sad”。这是因为
\b
表示ascii字符,并被一起解释


查看此stackoverflow答案,了解如何解决此问题的解决方案:

预期输出是否“很糟糕”?当按原样运行代码时,输出为:“so ad”。是的,“so\\bad”也将是“so bad”,带有两个空格。我怀疑它正在打印
o
,但是
\b
被解释为单个退格字符,而不是“一个反斜杠,然后是一个b”,因此当它“打印”时,它备份上一个字符。由于要替换这么多符号,使用
re.sub
或r'so\bad'可能更容易,值得一提IMO@AmitGold:谢谢,相应地修改了答案
string = r'so\bad'