Python:在文件中写入unicode值

时间:2012-09-05 21:45:26

标签: python encoding utf

我正在编写一个脚本,用多种语言编写文件,包括没有ascii文本,因此我用unicode编写内容。

以下是数据的打印:

[['LATEST', u'\u0928\u0935\u0940\u0928\u0924\u092e'], ['RECOMMENDED', u'\u0938\u093f\u092b\u093e\u0930\u093f\u0936 \u0915\u093f\u092f\u093e \u0917\u092f\u093e']]

这是我用来编写的代码:

f = codecs.open(file,encoding='utf-8', mode='w')
f.write(el)

这样可以在文本编辑器中以印地语显示文本,但由于服务器需要的文件格式,我需要直接写出

  

\ u0928 \ u0935 \ u0940 \ u0928 \ u0924 \ u092e

我正在运行

os.system("native2ascii -encoding utf-8 ./output/nls_hi.properties ./output/nls_hi.properties")

但这需要花费太多时间,我不禁想到必须有一种方法可以直接以正确的方式写出来。

想法?

由于

杰森

2 个答案:

答案 0 :(得分:4)

您可能希望使用类似my_string.encode('raw_unicode_escape')

的内容

好吧,f = codecs.open('bla.txt', encoding='raw_unicode_escape', mode='w')

然后该文件将包含转义字符串:\u0928\u0935\u0940\u0928\u0924\u092e

答案 1 :(得分:1)

服务器期望的文件格式是什么?它需要byte-order mark(BOM)吗?无论答案是什么,最简单的方法就是直接使用str.encode

data = u'text with Unicode chars etc.'
with open(filename, 'w') as f:
    # For UTF-8, no BOM:
    f.write(data.encode('utf-8')

对于UTF-16,请使用data.encode('utf-16'),它将附带BOM。如果您不想要BOM,请明确使用utf-16le(little-endian)或utf-16be(big-endian)。