如何消除类似的字符,例如“它,一句话
这些字符导致我的python程序失败。我如何处理这些字符,我的输入文件有很多。
请帮忙。感谢
答案 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不会消失,你必须在某个时候学习它 - 所以现在是开始的好时机。