我正在尝试使用 fastkml 来读取/写入 KML 文件,但它用来解析 XML 的 lxml 似乎有一些关于 UTF-8 的内容:
from fastkml import kml
from lxml import etree
INPUT_KML_FILE = "myfile.kml"
with open(INPUT_KML_FILE, 'rb') as myfile:
#AttributeError: 'bytes' object has no attribute 'encode'
#data=myfile.read().encode('utf-8')
data=myfile.read()
k = kml.KML()
#ValueError
k.from_string(data)
您建议采取什么解决方法?
谢谢你。
编辑:我尝试使用另一个 KML 文件,它运行正常。太糟糕了 FastKML/lxml 没有说明 KML 文件中的哪一行不符合它的喜好。
INPUT_KML_FILE = "myotherfile.kml"
k = kml.KML()
with open(INPUT_KML_FILE,'rb') as kmlFile:
k.from_string(kmlFile.read())
print(k.to_string(prettyprint=True))
试试这个。 b代表二进制,不需要编码。
with io.open(name, 'r', encoding='utf-8') as file:
data = file.read()
FastKML 1.0 版现在可以直接读取文件,无需先将其转换为字符串
cs_kml = k = KML.parse("docs/Document-clean.kml", validate=False)
更多内容请参见文档