Python:清理字符串

3
我有一个字符串像这样
somestring='in this/ string / i have many. interesting.occurrences of {different chars} that need     to .be removed  '

这是我想要的结果:

somestring='in this string i have many interesting occurrences of different chars that need to be removed'

我开始手动执行各种.replace,但是有太多不同的组合,我认为一定有更简单的方法。也许已经有一个库可以做到这一点呢?

有没有人知道如何清理这个字符串>?

3个回答

19

我会使用正则表达式来将所有非字母数字字符替换为空格:

>>> import re
>>> somestring='in this/ string / i have many. interesting.occurrences of {different chars} that need     to .be removed  '
>>> rx = re.compile('\W+')
>>> res = rx.sub(' ', somestring).strip()
>>> res
'in this string i have many interesting occurrences of different chars that need to be removed'

哇哇哇!!这太惊人了!!我在哪里可以阅读关于这个库的信息? - Alex Gordon
3
这只是一个简单的正则表达式。该库可在http://docs.python.org/library/re.html中找到。有关正则表达式的更多信息,请参见http://www.regular-expressions.info/。 - kennytm

2
你有两个步骤:删除标点符号,然后删除额外的空格。
1)使用string.translate。
import string
trans_table = string.maketrans( string.punctuation, " "*len(string.punctuation)
new_string = some_string.translate(trans_table)

这将应用一个翻译表,将标点符号映射为空格。
2) 移除多余的空格。
new_string = " ".join(new_string.split())

1
re.sub('[\[\]/{}.,]+', '', somestring)

请注意,interesting.occurrences需要变成带有空格的interesting occurrences - kennytm
多个空格'need      to'需要压缩成一个'need to' - Nick T

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接