【问题标题】:Get all tags name from XML (only the tags name)从 XML 获取所有标签名称(仅标签名称)
【发布时间】:2017-02-28 13:00:25
【问题描述】:

我正在尝试打印所有标签(仅标签名称),但我遇到了连接问题:

DEXML = urlopen('# the URL of the XML')

tree_DE = ET.parse(DEXML)

root_DE = tree_DE.findall('.//*')
a = []

for element in list(set(root_DE)):
    x = str(element)
    m = re.search("'[a-zA-Z]+'", x)
    m = ",".join()
    a.append(m)

print(a)

运行此代码后,错误为:
TypeError: join() takes exactly one argument (0 given)

【问题讨论】:

  • 将它打印在列表中并且没有多余的字符对我来说是无能为力的。示例:结果之一:“” 我只想要:pubDate
  • 为什么是正则表达式?为什么不element.tag
  • 谢谢 Parfait,我用 element.tag 做到了。

标签: python xml python-3.x parsing tags


【解决方案1】:
DEXML = urlopen('# the URL of the XML')

tree_DE = ET.parse(DEXML)

root_DE = tree_DE.findall('.//*')
a = []

for element in list(set(root_DE)):
    x = str(element)
    seq = re.search("'[a-zA-Z]+'", x)
    # add seq argument 
    m = ",".join(seq)
    a.append(m)

print(a)

【讨论】:

  • 我无法下载和安装 seq:弃用:--no-install、--no-download、--build 和 --no-clean 已弃用。见github.com/pypa/pip/issues/906。下载/解压 seq 找不到任何满足 seq 要求的下载 清理... 没有找到用于 seq 的发行版 在 C:\Users\barak-s\pip\pip.log 中存储失败的调试日志
  • seq 是一个变量,可以是 xy 或 baraks_variable.......join 缺少参数意味着 = join(missing argument here)......语法:str.join(sequence )
【解决方案2】:

正确的方法:

PRD_XML = urlopen('URL.xml_1')
DEX_ML = urlopen('URL.xml_2')

for event, element in ET.iterparse(PRD_XML):
    PRD_tags.append(element.tag)

for event_2, element_2 in ET.iterparse(DEX_ML):
    DE_tags.append(element_2.tag)


def compare():
    if not [item for item in PRD_tags if item in DE_tags]:
        return False
    return True

assert_false(compare(), "no match")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    相关资源
    最近更新 更多