2017-09-01 78 views
1

我有一个非英语的行列表,其中每行是一个字符串和整数的列表。我需要将这些数据写入一个文件并相应地将所有数字转换为字符串。 数据内容如下:其中包含u'm\xfcnze'第一名单上使用Python编解码器,但仍然得到UnicodeDecodeError

[[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], ...] 

循环中断。

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' codec can't decode byte 0xc3 in position 38: ordinal not in range(128)错误。

尝试r.encode('utf-8') if isinstance(r, str)没有解决这个问题,所以我做错了什么?

+0

什么是'data'?我想知道'data'类型和结构能够帮助你。 –

+0

@ gsi-frank我已经更新了这个问题 – minerals

回答

1

这应该工作:

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') 

我使用的unicode()功能

注意,因为Python 3串数据类型为字符串unicode的,你的代码工作在Python 3罚款没有任何修改(不str - > unicode needed)

相关问题