[英]python write unicode to file easily?
我想確保我的代碼中的所有字符串都是unicode,所以我使用unicode_literals
,然后我需要將字符串寫入文件:
from __future__ import unicode_literals
with open('/tmp/test', 'wb') as f:
f.write("中文") # UnicodeEncodeError
所以我需要這樣做:
from __future__ import unicode_literals
with open('/tmp/test', 'wb') as f:
f.write("中文".encode("utf-8"))
f.write("中文".encode("utf-8"))
f.write("中文".encode("utf-8"))
f.write("中文".encode("utf-8"))
但每次我需要在代碼中編碼時,我都很懶,所以我改為編解碼器:
from __future__ import unicode_literals
from codecs import open
import locale, codecs
lang, encoding = locale.getdefaultlocale()
with open('/tmp/test', 'wb', encoding) as f:
f.write("中文")
如果我只想寫文件,任何更簡單的方法,我還是認為這太過分了?
您不需要調用.encode()
,也不需要顯式調用locale.getdefaultlocale()
:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import io
with io.open('/tmp/test', 'w') as file:
file.write(u"中文" * 4)
它使用locale.getpreferredencoding(False)
字符編碼將Unicode文本保存到文件中。
在Python 3上:
您不需要使用顯式編碼聲明( # -*- coding: utf-8 -*-
),在Python源代碼中使用文字非ascii字符。 utf-8
是默認值。
你不需要使用import io
:builtin open()
就是io.open()
u''
( u
前綴)。 ''
默認情況下,文字是Unicode。 如果你想省略u''
然后from __future__ import unicode_literals
就像問題中的代碼一樣。 即,完整的Python 3代碼是:
#!/usr/bin/env python3
with open('/tmp/test', 'w') as file:
file.write("中文" * 4)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.