我有一个关于诺贝尔奖的很多条目的文件。我将该文件转换为如下列表:
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
使用:
curr = 'voor hun verdiensten op het gebied van de analyse van de kristalstructuur door middel van röntgenstraling'
attr = 'röntgen'
我尝试用utf-8转换它,但这似乎没有帮助。有没有人有解决方案?
答案 0 :(得分:1)
这是因为你使用的是Python 2,很可能是在Windows上,而你的文件是用utf-8编码的,而不是latin-1。
你做的最好的事情,而不是试图随机修复它(包括你的问题的第一个评论:它们都是随机的建议,),是要了解发生了什么。所以,停止你想要做的事情。
然后,如果可以的话,切换到Python3 - 这应该自动处理大多数问题。
如果您不能正确处理文本解码和手动重新编码 - 概念在上面的链接上。假设您的输入文件是utf-8
答案 1 :(得分:0)
解决方案是将open(path,’r’,)
替换为open(path,’r’,encodeing=’utf-8’)
如果你添加de编码参数python将确保在utf-8中读取de文件,所以当你比较它们真正相同的字符串时。