我有一个符号列表,我想用字符串中的空格替换。 这是我的代码:
useless = ['.', ',', '!', '?', ':', '(', ')', '"', '[', ']']
message = 'Whatever. you; "want:)'
for sign in useless:
while message.find(sign):
message.replace(sign, ' ')
这导致永不停止的无限循环。 它可能很容易,但我已经很长时间了。 任何帮助都会很棒,谢谢。
答案 0 :(得分:5)
message.replace()
没有修改字符串(在Python中,字符串是不可变的,这意味着你无法就地修改它们。)
您正在寻找的是:
message = message.replace(sign, ' ')
(另请参阅Francisco Couzo对另一个错误的回答。)
答案 1 :(得分:3)
除了必须将message
重新分配给mesage.replace(sign, ' ')
之外,message.find(sign)
如果无法找到字符串,则返回-1
。
将其替换为:sign in message
。
答案 2 :(得分:0)
您可以尝试使用正则表达式而不是循环。
>>> import re
>>> p = '[.,!?:";()\[\]]'
>>> message = 'Whatever. you; "want:)'
>>> re.sub(p, ' ', message)
'Whatever you want '
如上所述,replace
返回一个值,不会就地更新。正如您所看到的,与re.sub
相同。