消除不需要的字符

时间:2013-04-25 10:07:57

标签: python exception-handling

如何消除类似的字符,例如“它,一句话

这些字符导致我的python程序失败。我如何处理这些字符,我的输入文件有很多。

请帮忙。感谢

2 个答案:

答案 0 :(得分:1)

使用ord()检查字符串中每个字符的ASCII值,如果它位于32到126之间(包括两者),则它是一个有效字符,否则忽略。

In [23]: strs="“It"

In [24]: "".join(x for x in strs if 31<ord(x)<127)
Out[24]: 'It'

或者如果您只想要字母:

In [27]: import string

In [28]: "".join(x for x in strs if x in string.ascii_letters)
Out[28]: 'It'

过滤掉整个单词,使用all()和我们在第一种情况下使用的条件:

In [35]: strs="“It foo bar€"

In [36]: [word for word in strs.split() if all(31<ord(c)<127 for c in word) ]
Out[36]: ['foo']

答案 1 :(得分:1)

看起来像UTF-8被误解为不同的编码。尝试:

fixed_input_string = input_string.decode('utf-8')

并查看是否能解决您的问题。

顺便说一句,如果您不知道我刚刚说了什么,请立即阅读http://www.joelonsoftware.com/articles/Unicode.html 。如果你试图编写只接受“英文”文本的软件(这实际上意味着ASCII,因为标准英文文本中有很多字符不是ASCII格式的),你的软件将在各种“有趣”中失败“ 方法。 Unicode不会消失,你必须在某个时候学习它 - 所以现在是开始的好时机。