我正在使用python 2.7.8。我做了很多搜索,但未能解决这个问题。我遇到这些类型的包裹链接:
但也失败了(我尝试使用上面的链接实现2.7.8而不是2.6)。
我正在使用以下代码: Python XML parsing from website
基本上我想要拿出xml,这是代码:
from xml.dom import minidom
import urllib
url_str = 'http://www.newyorkfed.org/markets/omo/dmm/fftoXML.cfm?type=daily'
xml_str = urllib.urlopen(xml_str).read()
xmldoc = minidom.parseString(xml_str)
obs_values = xmldoc.getElementsByTagName('base:OBS_VALUE')
# prints the first base:OBS_VALUE it finds
print obs_values[0].firstChild.nodeValue
# prints the second base:OBS_VALUE it finds
print obs_values[1].firstChild.nodeValue
# prints all base:OBS_VALUE in the XML doc
for obs_val in obs_values:
print obs_val.firstChild.nodeValue
错误:
Traceback (most recent call last):
File "C:\Users\DELL\Desktop\python\s\fyp\xml.py", line 1, in <module>
from xml.dom import minidom
File "C:\Users\DELL\Desktop\python\s\fyp\xml.py", line 1, in <module>
from xml.dom import minidom
ImportError: No module named dom
答案 0 :(得分:4)
像这样检查
import xml
print(xml.__file__)
然后检查它是否是从你期望的python模块中挑选的。
同时检查您正在使用的相应文件夹中是否还有其他xml.py
。如果有的话rename
。
同时改变这一点。
xml_str = urllib.urlopen(url_str).read()
答案 1 :(得分:3)
您将模块命名为xml.py
。不要这样做,它掩盖了内置包。 Python正在查找您的脚本,而不是内置的xml
包。您的xml
脚本没有dom
子包,因此导入失败。
您可以在追溯中看到这一点:
Traceback (most recent call last):
File "C:\Users\DELL\Desktop\python\s\fyp\xml.py", line 1, in <module>
from xml.dom import minidom
File "C:\Users\DELL\Desktop\python\s\fyp\xml.py", line 1, in <module>
from xml.dom import minidom
ImportError: No module named dom
您的脚本最初是作为__main__
模块导入的,因此xml.dom
导入行再次导入脚本本身,现在为xml
,这就是您的脚本行出现的原因在该追溯中两次。
将脚本重命名为其他内容;如果留下遗留的xml.pyc
文件,您可能需要删除它。
接下来,您的代码中会出现拼写错误:
xml_str = urllib.urlopen(xml_str).read()
# ^^^^^^^
应该使用url_str
代替。
答案 2 :(得分:1)
这是PyCharm 2020.1中的最新问题。该问题已在https://youtrack.jetbrains.com/issue/PY-41791
在解决此问题之前,已提出以下解决方法:
替换xml目录
\ plugins \ python-ce)\ helpers \ typeshed \ stdlib \ 2and3
与来自 https://github.com/python/typeshed/tree/master/stdlib/2and3/xml
执行此操作后,转到PyCharm和代码->代码清除。清理完成后,重新启动PyCharm以使新设置生效。
答案 3 :(得分:0)
你应该能够
from xml.dom import minidom
但是您无法调用自己的文件xml.py(出于同样的原因,不要将其称为random.py math.py等)