python UTF-8无法处理(ñ)和(ö)

时间:2016-08-21 21:57:09

标签: python-2.7 utf-8 ascii

我正在从文件中读取一行,然后将该行复制到另一个文件中。

这是读取文件内容的代码

files = [f for f in os.listdir('.') if os.path.isfile(f)]
for file in files:
    if file.endswith(".ttl"):
        with open(file) as fileTTL:
            lines = fileTTL.readlines()
            for line in lines:
                writeRDFToFile(line)

并且对于每一行,我调用 writeRDFToFile 函数,即:

def writeRDFToFile(rdf):
    f = open('joined.ttl','w')
    try:
        rdf = rdf.encode('UTF-8')
        f.write(rdf) # python will convert \n to os.linesep
    except Exception as e:
        print "exception happened " + rdf
        print e
    f.close()

我收到了这个错误:

'ascii' codec can't decode byte 0xc3 in position XXX: ordinal not in range(128)

关于此值:

  

Luis_Buñuel   Lasse_Hallström

但是如你所见,我已经尝试用UTF-8对其进行编码,那么为什么错误从第一位开始就是ascii?

由于

1 个答案:

答案 0 :(得分:1)

我相信你遇到的问题是输入,而不是输出(没有堆栈跟踪很难确定)

您的文件读取(有效地执行open(file).readlines())正在读取此文件作为字符串对象的列表,而不是encode('UTF-8)所需的unicode(它正在尝试某些自动化,我相信,但因为输入不是ASCII而失败。

尝试完全删除rdf = rdf.encode('UTF-8')