python中的特殊字符

python中的特殊字符,python,special-characters,Python,Special Characters,我有一个档案,里面有很多关于诺贝尔奖的条目。然后将该文件转换为如下列表: file = open(path, 'r') file.readline() content = [] for line in file: line = line.replace('\n', '') content.append(line.split(';')) content = check(content, 'röntgen') 之后,我有一个函数,它接受该列表和其他参数,并检查列表是否包含该参数。

我有一个档案,里面有很多关于诺贝尔奖的条目。然后将该文件转换为如下列表:

file = open(path, 'r')
file.readline()
content = []
for line in file:
    line = line.replace('\n', '')
    content.append(line.split(';'))

content = check(content, 'röntgen')
之后,我有一个函数,它接受该列表和其他参数,并检查列表是否包含该参数。但是,如果参数使用Ö这样的特殊字符,则它不起作用,因为当读取文件时,python会将其保存为:Ã∗

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
与:


我尝试过用utf-8转换它,但似乎没有帮助。有人有解决方案吗?

发生这种情况是因为您使用的是Python 2,可能是在Windows上,并且您的文件是用utf-8编码的,而不是拉丁语-1

你所做的最好的事情,而不是试图随机修复它(包括对你的问题的第一个评论:它们都是随机的建议),是理解发生了什么。所以,停止你想做的事

请阅读以下内容:

然后,如果可以的话,切换到Python3——这将自动处理大多数问题


如果你不能,你必须正确处理文本解码和重新编码手动-概念在上面的链接。假设您的输入文件是utf-8

解决方案是将
open(path,'r',)
替换为
open(path,'r',encodeing='utf-8')

如果添加反编码参数,python将确保以utf-8格式读取反编码文件,因此在比较字符串时,它们是完全相同的。

尝试iso-8859-1编码您的python文件和文本文件都是使用utf-8编码的吗?python文件是用#-*-编码:utf-8-*-编码的,文本文件是用utf-8编码的,请检查您的编码并指定正确的文件打开您的文件,例如file=open(path,encoding='utf-8','r')。是的,它与open(path,'r',encoding='utf-8')一起工作,谢谢!我正在使用python 3.5编译器。我完全明白发生了什么。我在这里恢复不是因为我不知道发生了什么我不知道我该怎么处理这个问题。
curr = 'voor hun verdiensten op het gebied van de analyse van de kristalstructuur door middel van röntgenstraling'
attr = 'röntgen'