0

我有一个来自 www 的 kmz 文件,并希望使用 pykml 将其读入 csv 或类似文件。该文件采用 UTF8 格式,或者至少它声称是 - 请参阅下面的标题。阅读它有效,但在出现第一个重音字符时会触发错误。

<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2'>
 <Document>
   <name>

from pykml import parser
with open(KMZFIL) as f:
 folder=parser.parse(f).getroot().Document.Folder
for pm in folder.Placemark:
 print(pm.name)

Ablitas (militar) (Emerg)
Ademuz (forestal)
Ager (PL%)
Alcala del Rio (ILIPA MAGNA)(Esc.)
Traceback (most recent call last):
  File "bin4/b21_xxxxxxx", line 15, in <module>
    print(pm.name)

grep "name" $INFIL | head -7
 ( ... )
   <name>Ablitas (militar) (Emerg)</name>
   <name>Ademuz (forestal)</name>
   <name>Ager (PL%)</name>
   <name>Alcala del Rio (ILIPA MAGNA)(Esc.)</name>
   <name>Ainzón</name>
4

2 回答 2

0

在这里没有看到答案,但这些是 lmxl StringElements——我使用 .text 来修复这个错误。

将 print(pm.name) 更改为 print(pm.name.text)

https://lxml.de/api/lxml.objectify.StringElement-class.html

于 2018-09-17T19:48:46.743 回答
0

您需要以指示 Python 将字节解释为 UTF-8 字符的方式打开文件。在 Python 2.7 中,您可以使用module来完成。 codecs

import codecs
with codecs.open(KMZFIL, encoding='utf-8') as f:

在 Python 3 中,该encoding选项已添加到标准中open,因此无需使用codecs.

于 2016-10-21T15:59:07.610 回答