我需要检查字符串中的某些符号,并用空格替换它们。我的代码:
string = 'so\bad'
symbols = ['•', '!', '"', '#', '$', '%', '&', '\'', '(', ')', '*', '+', ',', '-', '.', '/', ':', ';', '<', '>', '=', '?', '@', '[', ']', '\\', '^', '_', '`', '{', '}', '~', '|', '"', '⌐', '¬', '«', '»', '£', '$', '°', '§', '–', '—']
for symbol in symbols:
string = string.replace(symbol, ' ')
print string
>> sad
为什么它什么都没有取代\ b?
答案 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