Python: 将包含非 ASCII 字符的列表写入文本文件
Python: write a list with non-ASCII characters to a text file
我正在使用 python 3.4,我正在尝试将姓名列表写入文本文件。名单如下:
my_list = ['Dejan Živković','Gregg Berhalter','James Stevens','Mike Windischmann',
'Gunnar Heiðar Þorvaldsson']
我使用以下代码导出列表:
file = open("/Users/.../Desktop/Name_Python.txt", "w")
file.writelines( "%s\n" % item for item in my_list )
file.close()
但是不行。 Python 似乎不喜欢非 ASCII 字符并给我以下错误:
"UnicodeEncodeError: 'ascii' codec can't encode character '\u017d' in position 6: ordinal not in range(128)"
你知道有没有办法解决这个问题?也许可以用 UTF-8 / unicode 编写文件?
试试这个:
>>> my_list = ['Dejan Živković','Gregg Berhalter','James Stevens','Mike Windischmann' ,'Gunnar Heiðar Þorvaldsson']
>>> f = open("/Users/.../Desktop/Name_Python.txt", "w")
>>> for x in my_list:
... f.write("{}\n".format(x))
...
>>> f.close()
尝试使用 UTF-8 编码。您可以先将 # -- coding: utf-8 -- 放在 .py 文件的顶部。
问题是文件正在使用 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 )
对于 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 )
我正在使用 python 3.4,我正在尝试将姓名列表写入文本文件。名单如下:
my_list = ['Dejan Živković','Gregg Berhalter','James Stevens','Mike Windischmann',
'Gunnar Heiðar Þorvaldsson']
我使用以下代码导出列表:
file = open("/Users/.../Desktop/Name_Python.txt", "w")
file.writelines( "%s\n" % item for item in my_list )
file.close()
但是不行。 Python 似乎不喜欢非 ASCII 字符并给我以下错误:
"UnicodeEncodeError: 'ascii' codec can't encode character '\u017d' in position 6: ordinal not in range(128)"
你知道有没有办法解决这个问题?也许可以用 UTF-8 / unicode 编写文件?
试试这个:
>>> my_list = ['Dejan Živković','Gregg Berhalter','James Stevens','Mike Windischmann' ,'Gunnar Heiðar Þorvaldsson']
>>> f = open("/Users/.../Desktop/Name_Python.txt", "w")
>>> for x in my_list:
... f.write("{}\n".format(x))
...
>>> f.close()
尝试使用 UTF-8 编码。您可以先将 # -- coding: utf-8 -- 放在 .py 文件的顶部。
问题是文件正在使用 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 )
对于 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 )