簡體   English   中英

python寫unicode容易文件?

[英]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)

這個解決方案怎么樣?

用Python寫入UTF-8文件

只有三行代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM