- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个来自 xmltodict 的基本示例,它与项目 github 页面上给出的示例非常相似。
def handle(_, book):
print(book['title'])
return True
with open(r'C:\Users\u369811\books.xml', 'r') as f:
FILE = f.read()
OUTPUT = xmltodict.parse((FILE), item_depth=2, item_callback=handle)
print(OUTPUT)
对于这个 xml
<?xml version="1.0"?>
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-12-16</publish_date>
<description>A former architect battles corporate zombies,
an evil sorceress, and her own childhood to become queen
of the world.</description>
</book>
<book id="bk103">
<author>Corets, Eva</author>
<title>Maeve Ascendant</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2000-11-17</publish_date>
<description>After the collapse of a nanotechnology
society in England, the young survivors lay the
foundation for a new society.</description>
</book>
<book id="bk104">
<author>Corets, Eva</author>
<title>Oberon's Legacy</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2001-03-10</publish_date>
<description>In post-apocalypse England, the mysterious
agent known only as Oberon helps to create a new life
for the inhabitants of London. Sequel to Maeve
Ascendant.</description>
</book>
<book id="bk105">
<author>Corets, Eva</author>
<title>The Sundered Grail</title>
<genre>Fantasy</genre>
<price>5.95</price>
<publish_date>2001-09-10</publish_date>
<description>The two daughters of Maeve, half-sisters,
battle one another for control of England. Sequel to
Oberon's Legacy.</description>
</book>
<book id="bk106">
<author>Randall, Cynthia</author>
<title>Lover Birds</title>
<genre>Romance</genre>
<price>4.95</price>
<publish_date>2000-09-02</publish_date>
<description>When Carla meets Paul at an ornithology
conference, tempers fly as feathers get ruffled.</description>
</book>
<book id="bk107">
<author>Thurman, Paula</author>
<title>Splish Splash</title>
<genre>Romance</genre>
<price>4.95</price>
<publish_date>2000-11-02</publish_date>
<description>A deep sea diver finds true love twenty
thousand leagues beneath the sea.</description>
</book>
<book id="bk108">
<author>Knorr, Stefan</author>
<title>Creepy Crawlies</title>
<genre>Horror</genre>
<price>4.95</price>
<publish_date>2000-12-06</publish_date>
<description>An anthology of horror stories about roaches,
centipedes, scorpions and other insects.</description>
</book>
<book id="bk109">
<author>Kress, Peter</author>
<title>Paradox Lost</title>
<genre>Science Fiction</genre>
<price>6.95</price>
<publish_date>2000-11-02</publish_date>
<description>After an inadvertant trip through a Heisenberg
Uncertainty Device, James Salway discovers the problems
of being quantum.</description>
</book>
<book id="bk110">
<author>O'Brien, Tim</author>
<title>Microsoft .NET: The Programming Bible</title>
<genre>Computer</genre>
<price>36.95</price>
<publish_date>2000-12-09</publish_date>
<description>Microsoft's .NET initiative is explored in
detail in this deep programmer's reference.</description>
</book>
<book id="bk111">
<author>O'Brien, Tim</author>
<title>MSXML3: A Comprehensive Guide</title>
<genre>Computer</genre>
<price>36.95</price>
<publish_date>2000-12-01</publish_date>
<description>The Microsoft MSXML3 parser is covered in
detail, with attention to XML DOM interfaces, XSLT processing,
SAX and more.</description>
</book>
<book id="bk112">
<author>Galos, Mike</author>
<title>Visual Studio 7: A Comprehensive Guide</title>
<genre>Computer</genre>
<price>49.95</price>
<publish_date>2001-04-16</publish_date>
<description>Microsoft Visual Studio 7 is explored in depth,
looking at how Visual Basic, Visual C++, C#, and ASP+ are
integrated into a comprehensive development
environment.</description>
</book>
</catalog>
这可以很好地打印出所有书籍,但是,书名是 NoneType,我无法迭代输出或将它们强制到列表中。
如何将返回的输出作为字符串列表?
最佳答案
我对 xmltodict 也有类似的问题,所以我修改了 this片段,这是我得到的:
#!/usr/bin/env python3
# -*- coding: utf8 -*-
import xml.etree.cElementTree as ElementTree
class Parser:
def __init__(self, file):
self.root = ElementTree.parse(file).getroot()
class Dict(dict):
def __init__(self, parent_element, **kwargs):
super().__init__(**kwargs)
if parent_element.items():
self.update(dict(parent_element.items()))
for element in parent_element:
if element:
# treat like dict - we assume that if the first two tags
# in a series are different, then they are all different.
if len(element) == 1 or element[0].tag != element[1].tag:
item = Parser.Dict(element)
# treat like list - we assume that if the first two tags
# in a series are the same, then the rest are the same.
else:
# here, we put the list in dictionary; the key is the
# tag name the list elements all share in common, and
# the value is the list itself
item = {element[0].tag: Parser.List(element)}
# if the tag has attributes, add those to the dict
if element.items():
item.update(dict(element.items()))
self.update({element.tag: item})
# this assumes that if you've got an attribute in a tag,
# you won't be having any text. This may or may not be a
# good idea -- time will tell. It works for the way we are
# currently doing XML configuration files...
elif element.items():
self.update({element.tag: dict(element.items())})
# finally, if there are no child tags and no attributes, extract
# the text
else:
self.update({element.tag: element.text})
class List(list):
def __init__(self, item):
super().__init__()
for element in item:
if element:
# treat like dict
if len(element) == 1 or element[0].tag != element[1].tag:
self.append(Parser.Dict(element))
# treat like list
elif element[0].tag == element[1].tag:
self.append(Parser.List(element))
elif element.text:
text = element.text.strip()
if text:
self.append(text)
elif element.items():
self.append(dict(element.items()))
@property
def parsed(self):
if self.root.items():
return Parser.Dict(self.root)
else:
return {self.root.tag: Parser.List(self.root)}
if __name__ == "__main__":
import pprint
pprint.pprint(Parser('PATH_TO_YOUR_XML.xml').parsed)
您的示例输出将是:
{'catalog': [{'author': 'Gambardella, Matthew',
'description': 'An in-depth look at creating applications \n'
' with XML.',
'genre': 'Computer',
'id': 'bk101',
'price': '44.95',
'publish_date': '2000-10-01',
'title': "XML Developer's Guide"},
{'author': 'Ralls, Kim',
'description': 'A former architect battles corporate zombies, \n'
' an evil sorceress, and her own childhood '
'to become queen \n'
' of the world.',
'genre': 'Fantasy',
'id': 'bk102',
'price': '5.95',
'publish_date': '2000-12-16',
'title': 'Midnight Rain'},
{'author': 'Corets, Eva',
'description': 'After the collapse of a nanotechnology \n'
' society in England, the young survivors '
'lay the \n'
' foundation for a new society.',
'genre': 'Fantasy',
'id': 'bk103',
'price': '5.95',
'publish_date': '2000-11-17',
'title': 'Maeve Ascendant'},
{'author': 'Corets, Eva',
'description': 'In post-apocalypse England, the mysterious \n'
' agent known only as Oberon helps to create '
'a new life \n'
' for the inhabitants of London. Sequel to '
'Maeve \n'
' Ascendant.',
'genre': 'Fantasy',
'id': 'bk104',
'price': '5.95',
'publish_date': '2001-03-10',
'title': "Oberon's Legacy"},
{'author': 'Corets, Eva',
'description': 'The two daughters of Maeve, half-sisters, \n'
' battle one another for control of England. '
'Sequel to \n'
" Oberon's Legacy.",
'genre': 'Fantasy',
'id': 'bk105',
'price': '5.95',
'publish_date': '2001-09-10',
'title': 'The Sundered Grail'},
{'author': 'Randall, Cynthia',
'description': 'When Carla meets Paul at an ornithology \n'
' conference, tempers fly as feathers get '
'ruffled.',
'genre': 'Romance',
'id': 'bk106',
'price': '4.95',
'publish_date': '2000-09-02',
'title': 'Lover Birds'},
{'author': 'Thurman, Paula',
'description': 'A deep sea diver finds true love twenty \n'
' thousand leagues beneath the sea.',
'genre': 'Romance',
'id': 'bk107',
'price': '4.95',
'publish_date': '2000-11-02',
'title': 'Splish Splash'},
{'author': 'Knorr, Stefan',
'description': 'An anthology of horror stories about roaches,\n'
' centipedes, scorpions and other insects.',
'genre': 'Horror',
'id': 'bk108',
'price': '4.95',
'publish_date': '2000-12-06',
'title': 'Creepy Crawlies'},
{'author': 'Kress, Peter',
'description': 'After an inadvertant trip through a Heisenberg\n'
' Uncertainty Device, James Salway discovers '
'the problems \n'
' of being quantum.',
'genre': 'Science Fiction',
'id': 'bk109',
'price': '6.95',
'publish_date': '2000-11-02',
'title': 'Paradox Lost'},
{'author': "O'Brien, Tim",
'description': "Microsoft's .NET initiative is explored in \n"
" detail in this deep programmer's "
'reference.',
'genre': 'Computer',
'id': 'bk110',
'price': '36.95',
'publish_date': '2000-12-09',
'title': 'Microsoft .NET: The Programming Bible'},
{'author': "O'Brien, Tim",
'description': 'The Microsoft MSXML3 parser is covered in \n'
' detail, with attention to XML DOM '
'interfaces, XSLT processing, \n'
' SAX and more.',
'genre': 'Computer',
'id': 'bk111',
'price': '36.95',
'publish_date': '2000-12-01',
'title': 'MSXML3: A Comprehensive Guide'},
{'author': 'Galos, Mike',
'description': 'Microsoft Visual Studio 7 is explored in depth,\n'
' looking at how Visual Basic, Visual C++, '
'C#, and ASP+ are \n'
' integrated into a comprehensive '
'development \n'
' environment.',
'genre': 'Computer',
'id': 'bk112',
'price': '49.95',
'publish_date': '2001-04-16',
'title': 'Visual Studio 7: A Comprehensive Guide'}]}
关于python - xmltodict 将非类型输出转换为列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46290653/
我正在使用 OUTFILE 命令,但由于权限问题和安全风险,我想将 shell 的输出转储到文件中,但出现了一些错误。我试过的 #This is a simple shell to connect t
我刚刚开始学习 Java,我想克服在尝试为这个“问题”创建 Java 程序时出现的障碍。这是我必须创建一个程序来解决的问题: Tandy 喜欢分发糖果,但只有 n 颗糖果。对于她给第 i 个糖果的人,
你好,我想知道我是否可以得到一些帮助来解决我在 C++ 中打印出 vector 内容的问题 我试图以特定顺序在一个或两个函数调用中输出一个类的所有变量。但是我在遍历 vector 时收到一个奇怪的错误
我正在将 intellij (2019.1.1) 用于 java gradle (5.4.1) 项目,并使用 lombok (1.18.6) 来自动生成代码。 Intellij 将生成的源放在 out
编辑:在与 guest271314 交流后,我意识到问题的措辞(在我的问题正文中)可能具有误导性。我保留了旧版本并更好地改写了新版本 背景: 从远程服务器获取 JSON 时,响应 header 包含一
我的问题可能有点令人困惑。我遇到的问题是我正在使用来自 Java 的 StoredProcedureCall 调用过程,例如: StoredProcedureCall call = new Store
在我使用的一些IDL中,我注意到在方法中标记返回值有2个约定-[in, out]和[out, retval]。 当存在多个返回值时,似乎使用了[in, out],例如: HRESULT MyMetho
当我查看 gar -h 的帮助输出时,它告诉我: [...] gar: supported targets: elf64-x86-64 elf32-i386 a.out-i386-linux [...
我想循环遍历一个列表,并以 HTML 格式打印其中的一部分,以代码格式打印其中的一部分。所以更准确地说:我想产生与这相同的输出 1 is a great number 2 is a great
我有下面的tekton管道,并尝试在Google Cloud上运行。集群角色绑定。集群角色。该服务帐户具有以下权限。。例外。不确定需要为服务帐户设置什么权限。
当尝试从 make 过滤非常长的输出以获取特定警告或错误消息时,第一个想法是这样的: $ make | grep -i 'warning: someone set up us the bomb' 然而
我正在创建一个抽象工具类,该类对另一组外部类(不受我控制)进行操作。外部类在某些接口(interface)点概念上相似,但访问它们相似属性的语法不同。它们还具有不同的语法来应用工具操作的结果。我创建了
这个问题已经有答案了: What do numbers starting with 0 mean in python? (9 个回答) 已关闭 7 年前。 在我的代码中使用按位与运算符 (&) 时,我
我写了这段代码来解析输入文件中的行输入格式:电影 ID 可以有多个条目,所以我们应该计算平均值输出:**没有重复(这是问题所在) import re f = open("ratings2.txt",
我需要处理超过 1000 万个光谱数据集。数据结构如下:大约有 1000 个 .fits(.fits 是某种数据存储格式)文件,每个文件包含大约 600-1000 个光谱,其中每个光谱中有大约 450
我编写了一个简单的 C 程序,它读取一个文件并生成一个包含每个单词及其出现频率的表格。 该程序有效,我已经能够在 Linux 上运行的终端中获得显示的输出,但是,我不确定如何获得生成的显示以生成包含词
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
1.普通的输出: print(str)#str是任意一个字符串,数字··· 2.格式化输出: ?
我无法让 logstash 正常工作。 Basic logstash Example作品。但后来我与 Advanced Pipeline Example 作斗争.也许这也可能是 Elasticsear
这是我想要做的: 我想让用户给我的程序一些声音数据(通过麦克风输入),然后保持 250 毫秒,然后通过扬声器输出。 我已经使用 Java Sound API 做到了这一点。问题是它有点慢。从发出声音到
我是一名优秀的程序员,十分优秀!