【发布时间】:2013-09-03 06:54:05
【问题描述】:
我在 Python 3.x 中写入文件时遇到问题,FOR 中的写入函数是在 utf-8 编码中写入捷克符号。 我是 Python 新手,但我为“utf-8”编码设置了 IDE 和 .py、.xml 文件,但我不知道为什么输出文件看起来像这样。 我的代码:
-*- coding: utf-8 -*-
from lxml import etree
from io import BytesIO
import sys
import codecs
f = open('uzivatelska_prirucka.xml','rb')
fo = open('try.xml','wb',1)
header = '?xml version="1.0" encoding="utf-8"?>\n<root\n'
fo.write(bytes(header,'UTF-8'))
some_file_like_object = f
tree = etree.parse(some_file_like_object)
root = tree.getroot()
node = tree.xpath('/prirucka/body/p');
for a in node:
for b in a.getiterator():
if not (b.find('r') is None):
text = etree.tostring(b.find('r'))
fo.write(bytes(str(text),'UTF-8'))
感谢您的帮助和建议
【问题讨论】:
-
也许写一个合适的左括号...
-
python3 中的
open函数。有一个encoding参数,您可以使用它来避免这些显式转换。 -
f = open('uzivatelska_prirucka.xml','rb',encoding='utf-8'),出现错误:二进制模式不带编码参数
-
您必须在文本模式下打开它,znamená pouze
'r',而不是'rb'。在 Python 3 中,这里可能不需要使用codecs模块。
标签: python encoding python-3.x