我正在尝试删除字符串/文件中的所有形式的标点符号。
到目前为止,这是我的代码。
>>def remove_symbols(p):
>>punc=set('''`~!@#$%^&*()-_=+\|]}[{;:'",<.>/?''')
>>for line in p:
>>clean =''.join(c for c in line if not c in punc)
>>print(clean)
但最终结果如果p =“我是你的!”
我
米
y
0
û
[R
取值
真的,我希望它看起来像这样 - &gt; “我是你的”
我很感激任何建议。
答案 0 :(得分:2)
看起来你试图通过一次迭代一行来删除段落中的符号。但是,不是遍历每一行,而是迭代每个字符。要改为遍历每一行,请使用split
:
def remove_symbols(p):
punc=set('''`~!@#$%^&*()-_=+\|]}[{;:'",<.>/?''')
for line in p.split("\n"):
clean =''.join(c for c in line if not c in punc)
print(clean)
remove_symbols("I'm your's!")
结果:
Im yours
或者,完全摆脱for
循环,让你的表达式一次遍历整个文本。
def remove_symbols(p):
punc=set('''`~!@#$%^&*()-_=+\|]}[{;:'",<.>/?''')
return ''.join(c for c in p if not c in punc)
print remove_symbols("I'm your's!")