Fastkml 和 UTF-8?

问题描述 投票:0回答:2

我正在尝试使用 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))
python fastkml
2个回答
0
投票

试试这个。 b代表二进制,不需要编码。

with io.open(name, 'r', encoding='utf-8') as file:
    data = file.read()

0
投票

FastKML 1.0 版现在可以直接读取文件,无需先将其转换为字符串

cs_kml = k = KML.parse("docs/Document-clean.kml", validate=False)

更多内容请参见文档

© www.soinside.com 2019 - 2024. All rights reserved.