从给定字符串中删除符号/标点符号

时间:2013-11-25 16:16:12

标签: python-3.x

我正在尝试删除字符串/文件中的所有形式的标点符号。

到目前为止,这是我的代码。

>>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; “我是你的”

我很感激任何建议。

1 个答案:

答案 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!")