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,但似乎没有帮助。有没有人有办法解决吗?

+0

尝试使用iso-8859-1编码 – Chedy2149

+0

您的Python文件和您的文本文件是否都使用UTF-8编码? – Guillaume

+0

python文件编码为# - \ * - 编码:utf-8 - \ * - 和文本文件编码为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

+0

我正在使用python 3.5编译器。我完全理解发生了什么。我在这里恢复并不是因为我不知道发生了什么,我不知道我应该怎样处理这个问题。 –