Jb_*_*Eyd 7 python ascii newline file list
我正在使用python 3.4,我正在尝试将一个名称列表写入文本文件.清单如下:
my_list = ['Dejan Živkovi?','Gregg Berhalter','James Stevens','Mike Windischmann',
'Gunnar Heiðar Þorvaldsson']
Run Code Online (Sandbox Code Playgroud)
我使用以下代码导出列表:
file = open("/Users/.../Desktop/Name_Python.txt", "w")
file.writelines( "%s\n" % item for item in my_list )
file.close()
Run Code Online (Sandbox Code Playgroud)
但它不起作用.Python似乎不喜欢非ASCII字符,并给我以下错误:
"UnicodeEncodeError: 'ascii' codec can't encode character '\u017d' in position 6: ordinal not in range(128)"
Run Code Online (Sandbox Code Playgroud)
你知道有没有办法解决这个问题?也许可以用UTF-8/unicode写文件?
Ana*_*mar 14
问题是该文件是通过ascii编码打开的(可能是locale.getpreferredencoding()您的环境返回的内容).您可以尝试使用正确的编码(也许utf-8)打开.此外,您应该使用with语句,以便它处理为您关闭文件.
对于Python 2.x,您可以使用codecs.open()函数而不是open()-
with codecs.open("/Users/.../Desktop/Name_Python.txt", "w",encoding='utf-8') as file:
file.writelines( "%s\n" % item for item in my_list )
Run Code Online (Sandbox Code Playgroud)
对于Python 3.x,您可以使用open()支持encoding参数的内置函数.示例 -
with open("/Users/.../Desktop/Name_Python.txt", "w",encoding='utf-8') as file:
file.writelines( "%s\n" % item for item in my_list )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7154 次 |
| 最近记录: |