多个符号替换不起作用

时间:2016-05-06 18:33:44

标签: python

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

string = 'so\bad'

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

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

print string
>> sad

为什么它什么都没有取代\ b?

4 个答案:

答案 0 :(得分:3)

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

>>> string = 'so\bad'
>>> print string
sad

您可以在Python Reference Manual找到它和所有其他转义字符。

为了获得您期望的行为,请使用反斜杠字符或使用raw strings

# Both result to 'so bad'
string = 'so\\bad'
string = r'so\bad'

答案 1 :(得分:1)

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

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

string = r'so\bad'

答案 2 :(得分:0)

你没有更换任何东西&#34; \ b&#34;退格,将光标向左移动一步。

答案 3 :(得分:0)

请注意,即使您省略了symbols列表和for symbol in symbols:代码,也总会得到结果&#34;悲伤&#34;当你print string。这是因为\b表示作为ascii字符的东西,并且正在被一起解释。

查看此stackoverflow答案,了解如何解决此问题的解决方案:How can I print out the string "\b" in Python