Python 2.7 使用Python编解码器但仍然得到UnicodeDecodeError

Python 2.7 使用Python编解码器但仍然得到UnicodeDecodeError,python-2.7,encoding,Python 2.7,Encoding,我有一个非英语的行列表,其中每一行都是字符串和整数的列表。我需要将这些数据写入一个文件,并相应地将所有数字转换为字符串。 数据内容如下: [[u'12', u'as', u'ss', u'ge', u'ge', u'm\xfcnze', u'10.0', u'25.2', u'68.05', 1, 2, 0], [u'13', u'aas', u'sss', u'tge', u'a', u'mat', u'11.0', u'35.7', u'10.1', 1, 1, 1], ...] 循环在包

我有一个非英语的行列表,其中每一行都是字符串和整数的列表。我需要将这些数据写入一个文件,并相应地将所有数字转换为字符串。 数据内容如下:

[[u'12', u'as', u'ss', u'ge', u'ge', u'm\xfcnze', u'10.0', u'25.2', u'68.05', 1, 2, 0],
[u'13', u'aas', u'sss', u'tge', u'a', u'mat', u'11.0', u'35.7', u'10.1', 1, 1, 1], ...]
循环在包含
u'm\xfcnze'
的第一个列表上中断

import codecs

with codecs.open("temp.txt", "w", encoding="utf-8") as f:
    for row in data:
        f.write(' '.join([str(r) for r in row]))
        f.write('\n')
上述代码失败,出现
UnicodeDecodeError:“ascii”编解码器无法解码位置38处的字节0xc3:序号不在范围(128)内的错误。

如果isinstance(r,str)无法解决此问题,则尝试
r.encode('utf-8')
,那么我做错了什么?

这应该可以:

import codecs

with codecs.open("temp.txt", "w", encoding="utf-8") as f:
    for row in data:
        f.write(' '.join([unicode(r) for r in row]))
        f.write('\n')
我正在使用这个函数

注意,由于Python 3字符串数据类型是字符串unicode,因此您的代码在Python 3中运行良好,无需任何修改(无需str->unicode)

这应该可以:

import codecs

with codecs.open("temp.txt", "w", encoding="utf-8") as f:
    for row in data:
        f.write(' '.join([unicode(r) for r in row]))
        f.write('\n')
我正在使用这个函数


注意,因为Python3字符串数据类型是string unicode,所以您的代码在Python3中运行良好,无需任何修改(无需str->unicode)

什么是
数据
?我想知道
数据
类型和结构,以便能够帮助您。@gsi frank我已经更新了问题
数据是什么
?我想知道
数据
类型和结构,以便能够帮助您。@gsi frank我已经更新了问题