繁体   English   中英

Python:编写列表列表时的ascii编解码器u'\\ xe8

[英]Python: ascii codec u'\xe8 when writing list of lists

我试图将列表列表写入文件,当我尝试将列表列表转换为字符串时遇到编码错误。

值包含一个列表列表,如下所示:

[[fsdé,fsdqè,fdsq],[foo1,foo2,foo3]]

这是我的代码:

f = open('workfile', 'w')
f.write("\n".join("\t".join(map(str,l)) for l in value))

这是错误:

Traceback (most recent call last):

  File "<string>", line 1, in <module>

  File "package_list_script.py", line 23, in craft_json

    f.write("\n".join("\t".join(map(str,l)) for l in value))

  File "package_list_script.py", line 23, in <genexpr>

    f.write("\n".join("\t".join(map(str,l)) for l in value))

UnicodeEncodeError: 'ascii' codec can't encode character u'\xe8' in position 4: ordinal not in range(128)

with io.open("somefile.txt", "w") as fout: fout.write(u"\n".join("\t".join(map(str,l)) for l in value))

使用Python 3模块并在字符串前面指定“ u”! 阿门

好的,您需要连接包含重音符号的字符串 ,然后将它们写入文件。 当您尝试使用str转换它们并获得UnicodeEncodeError我假设l是unicode列表的列表。

您可以简单地尝试以unicode处理所有内容:

f.write((u"\n".join(u"\t".join(l) for l in value)).encode(encoding))

其中编码可以是latin1utf8cp1252或您要用于文件的编码。

另外,您可以编码单个字符串:

f.write("\n".join("\t".join(map((lambda x: x.encode('utf8')), l)) for l in value))

Python 3将为您完成此任务。

在Python 2中,您可以像这样使用Python 3的io模块:

with io.open("somefile.txt", "w") as fout: fout.write(u"\N{EURO SIGN}")

您可以显式地指定io.open encoding=... ,或者像我在这里所做的那样,我依赖于默认值locale.getpreferredencoding()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM