python中的特殊字符

时间:2017-01-16 15:12:16

标签: 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')

之后我有一个函数,它接受该列表和另一个参数,并检查列表是否包含该参数。但是如果参数采用像Ö这样的特殊字符,那么它就不起作用了,因为当读取文件时,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转换它,但这似乎没有帮助。有没有人有解决方案?

2 个答案:

答案 0 :(得分:1)

这是因为你使用的是Python 2,很可能是在Windows上,而你的文件是用utf-8编码的,而不是latin-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

答案 1 :(得分:0)

解决方案是将open(path,’r’,)替换为open(path,’r’,encodeing=’utf-8’) 如果你添加de编码参数python将确保在utf-8中读取de文件,所以当你比较它们真正相同的字符串时。