【发布时间】:2017-12-09 16:40:51
【问题描述】:
我有两张世界的 SVG 地图,下载 here。我的目标是在 python 中对这些地图进行一些编辑,通过 BeautifulSoup4 使用它们。这与低分辨率文件 (132.5 Kb) 完美配合。但是,当我尝试将 BS4 解析器(使用 lxml)与高分辨率文件 (1.2 Mb) 一起使用时,它会完全失败。
代码是这样的:
import lxml
from bs4 import BeautifulSoup as Soup
with open('worldHigh.svg','r') as f:
handler = f.read()
soup = Soup(handler,'xml')
print(soup.prettify())
当我使用 worldHigh.svg 文件运行它时,唯一打印的内容是
<?xml version="1.0" encoding="utf-8"?>
当我运行等效但将 worldHigh.svg 更改为 worldLow.svg 时,它会正确打印 XML(根据需要)。
两个 SVG 文件在自行打开时都可以正常工作(即,它们显示地图)。但是,当我尝试解析它时,一个失败,另一个成功。我不知道出了什么问题。如果解析器在大尺寸下失败,我会理解,但 1.2 MB 似乎并不大。
【问题讨论】:
-
试试
with open('worldHigh.svg','rb') as f:。如果可行,我稍后会添加解释原因。
标签: python python-3.x svg xml-parsing beautifulsoup