我正在用中文写一个文件:
<locale name="cmn-Hans">
<title>大白鲨 Jaws</title>
<synopsis>由金像奖导演史蒂芬·斯皮尔伯格执导,《大白鲨》树立了紧张悬疑片的标准,并迅速成为一种文化现象,永远改变了观众的电影经验。濒海的艾米提小镇遭到一条危险的大白鲨攻击,镇上的警长(洛伊·薛德)、年轻的海洋生物学家(理查德·瑞佛斯)、老成的鲨鱼猎人(罗伯特·萧)联手展开一场危急的冒险,准备毁灭这只怪兽,免得它再度伤人。令人难忘的配乐带来纯粹的恐惧,《大白鲨》至今仍是电影史上最具影响力、最扣人心弦的冒险电影之一。</synopsis>
</locale>
该文件使用codecs
编写,如下所示:
new_file = codecs.open(metadata_filepath, 'w', 'utf8')
new_file.write(u'''contents here''')
如何让文件看起来像实际中文字符而不是unicode字符:
<locale name="cmn-Hans">
<title>大白鲨 Jaws</title>
<synopsis>由金像奖导演史蒂芬·斯皮尔伯格执导,《大白鲨》树立了紧张悬疑片的标准,并迅速成为一种文化现象,永远改变了观众的电影经验。濒海的艾米提小镇遭到一条危险的大白鲨攻击,镇上的警长(洛伊·薛德)、年轻的海洋生物学家(理查德·瑞佛斯)、老成的鲨鱼猎人(罗伯特·萧)联手展开一场危急的冒险,准备毁灭这只怪兽,免得它再度伤人。令人难忘的配乐带来纯粹的恐惧,《大白鲨》至今仍是电影史上最具影响力、最扣人心弦的冒险电影之一。</synopsis>
</locale>
如何让文件打印中文字符(至今仍)而不是Unicode表示(490;&amp;#19978)?
要获取初始内容,我使用的是中文xml文件中的etree.tostring(...)
。
答案 0 :(得分:2)
在Python 2中,将encoding="utf-8"
传递给ElementTree.tostring
,然后以二进制模式打开文件。在Python 3中,您可以将encoding="unicode"
传递给ElementTree.tostring
,然后按原样打开文件。
演示(Python 2):
>>> print(ET.tostring(tree, encoding="utf-8"))
<locale name="cmn-Hans">
<title>大白鲨 Jaws</title>
<synopsis>由金像奖导演史蒂芬·斯皮尔伯格执导,《大白鲨》树立了紧张悬疑片的标准,并迅速成为一种文化现象,永远改变了观众的电影经验。濒海的艾米提小镇遭到一条危险的大白鲨攻击,镇上的警长(洛伊·薛德)、年轻的海洋生物学家(理查德·瑞佛斯)、老成的鲨鱼猎人(罗伯特·萧)联手展开一场危急的冒险,准备毁灭这只怪兽,免得它再度伤人。令人难忘的配乐带来纯粹的恐惧,《大白鲨》至今仍是电影史上最具影响力、最扣人心弦的冒险电影之一。</synopsis>
</locale>
>>> print(ET.tostring(tree))
<locale name="cmn-Hans">
<title>大白鲨 Jaws</title>
<synopsis>由金像奖导演史蒂芬·斯皮尔伯格执导,《大白鲨》树立了紧张悬疑片的标准,并迅速成为一种文化现象,永远改变了观众的电影经验。濒海的艾米提小镇遭到一条危险的大白鲨攻击,镇上的警长(洛伊·薛德)、年轻的海洋生物学家(理查德·瑞佛斯)、老成的鲨鱼猎人(罗伯特·萧)联手展开一场危急的冒险,准备毁灭这只怪兽,免得它再度伤人。令人难忘的配乐带来纯粹的恐惧,《大白鲨》至今仍是电影史上最具影响力、最扣人心弦的冒险电影之一。</synopsis>
</locale>