python中的特殊字符
我有许多关于诺贝尔奖的条目。我比文件转换成像这样的列表:python中的特殊字符
file = open(path, 'r')
file.readline()
content = []
for line in file:
line = line.replace('\n', '')
content.append(line.split(';'))
content = check(content, 'röntgen')
之后,我有一个函数,该列表和其他参数,并检查该列表中包含这样的说法。但是,如果该参数可喜欢它doen't工作Ö特殊字符,因为当文件被读蟒蛇保存它想:ö
def check(content, attr):
reducedList = []
for i in range(len(content)):
curr = content[i][4]
if curr.find(attr) != -1:
reducedList.append(content[i])
return reducedList
有:
curr = 'voor hun verdiensten op het gebied van de analyse van de kristalstructuur door middel van röntgenstraling'
attr = 'röntgen'
我试图将其转换与UTF-8,但似乎没有帮助。有没有人有办法解决吗?
的解决方案是与open(path,’r’,encodeing=’utf-8’)
更换open(path,’r’,)
如果添加去encodeing参数蟒蛇将确保日的文件中读取UTF-8,所以当你比较字符串他们是真正的相同。
发生这种情况是因为您使用的是Python 2,可能在Windows上,而您的文件使用utf-8编码,而不是拉丁文-1。
你做的最好的东西,而不是试图随机修复它(包括与你的问题的第一个评论:他们都是随机的建议),是要了解发生了什么。所以,停止你想做的事情。自动应处理大多数问题 - https://www.joelonsoftware.com/2003/10/08/the-absolute-minimum-every-software-developer-absolutely-positively-must-know-about-unicode-and-character-sets-no-excuses/
然后,切换到Python3,如果你可以:
阅读本。
如果您不能正确处理文本解码和手动重新编码 - 这些概念位于上面的链接上。假设你的输入文件为UTF-8
我正在使用python 3.5编译器。我完全理解发生了什么。我在这里恢复并不是因为我不知道发生了什么,我不知道我应该怎样处理这个问题。 –
尝试使用iso-8859-1编码 – Chedy2149
您的Python文件和您的文本文件是否都使用UTF-8编码? – Guillaume
python文件编码为# - \ * - 编码:utf-8 - \ * - 和文本文件编码为utf-8 –