【问题标题】:Can anyone tell me what error msg "line 1182 in parse" means when I'm trying to parse and xml in python当我尝试在 python 中解析和 xml 时,谁能告诉我错误消息“解析中的第 1182 行”是什么意思
【发布时间】:2017-02-20 08:15:19
【问题描述】:

这是导致错误消息的代码:

import urllib
import xml.etree.ElementTree as ET

url = raw_input('Enter URL:')

urlhandle = urllib.urlopen(url)

data = urlhandle.read()

tree = ET.parse(data)

错误:

我是 python 新手。我确实阅读了文档和一些教程,但显然我仍然做错了什么。我不相信它是 xml 文件本身,因为它对两个不同的 xml 文件执行此操作。

【问题讨论】:

  • 这称为回溯。请参阅 docs.python.org/3/tutorial/errors.html 了解其含义。
  • 请发布该错误的实际文本而不是图像。这样其他人在搜索时可以找到它。
  • 传递响应而不是内容tree = ET.parse(urllib.urlopen(url))

标签: python xml parsing url elementtree


【解决方案1】:

错误消息表明您的代码正在尝试打开一个文件,该文件的名称存储在变量 source 中。

无法打开该文件 (IOError),因为变量 source 包含一堆 XML,而不是文件名。

【讨论】:

  • 谢谢丹妮尔。我认为我处理获取 URL、打开它然后解析它的方式看起来很笨拙,但我找不到正确的方法。是否有可以接受输入然后将其解析为 xml 的单行语法?
  • 您使用 source 两次,一次作为文件名,然后使用新的文件句柄破坏它。尝试类似 inFile = open(source, "rb")
  • 不,这是误导。 source 来自 ElementTree 库的源代码,而不是来自 OP 的代码。
【解决方案2】:

data 是以字符串形式引用 XML 内容,但 parse() 函数需要文件名或 file object 作为参数。这就是出现错误的原因。

urlhandle 是一个文件对象,所以tree = ET.parse(urlhandle) 应该适合你。

【讨论】:

  • 只是给任何搜索这个和 mzjn 的人的注释,这与另一个选项同样适用,但我只能“检查”一个响应(作为一个完整的新手,我觉得这很奇怪,因为即使我发现通常有多种方法可以创建功能代码)。无论如何,这有效:-)
【解决方案3】:

考虑使用 ElementTree 的fromstring()

import urllib
import xml.etree.ElementTree as ET

url = raw_input('Enter URL:')
# http://feeds.bbci.co.uk/news/rss.xml?edition=int

urlhandle = urllib.urlopen(url)    
data = urlhandle.read()

tree = ET.fromstring(data)

print ET.tostring(tree, encoding='utf8', method='xml')

【讨论】:

  • 太棒了!请接受最有帮助的答案以确认解决方案。
猜你喜欢
  • 1970-01-01
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2011-03-21
  • 2010-11-22
相关资源
最近更新 更多