Python 使用BeautifulSoup提取和分组元素/标记
我有一个包含以下数据类型和结构的文件:Python 使用BeautifulSoup提取和分组元素/标记,python,beautifulsoup,Python,Beautifulsoup,我有一个包含以下数据类型和结构的文件: A. B 例一 1. 2. 例二 3. 4. C D 例子 1. 2. 数据在文件中以这种精确的结构继续,但最内部的..标记除外,这些标记可以重复n次,数据结构总是以标记开始,然后继续以..和..标记 我想做的是提取最外层的标记之间的所有数据,并使用和作为数据块的描述。当然,我还希望将最内部的标记彼此分离,并以某种方式保存此数据,以便可以清楚地看到最外部的数据与父数据相关 我没有一个确切的想法,我想如何保存数据,所以任何例子是赞赏 我正在用Python
A.
B
例一
1.
2.
例二
3.
4.
C
D
例子
1.
2.
数据在文件中以这种精确的结构继续,但最内部的..
标记除外,这些标记可以重复n次,数据结构总是以
标记开始,然后继续以..
和..
标记
我想做的是提取最外层的
标记之间的所有数据,并使用
和
作为数据块的描述。当然,我还希望将最内部的
标记彼此分离,并以某种方式保存此数据,以便可以清楚地看到最外部的数据与父数据相关
我没有一个确切的想法,我想如何保存数据,所以任何例子是赞赏
我正在用Python模块BeautifulSoup测试这一点,并在这里搜索和阅读了很多示例,但没有找到任何可以为我指明正确方向的东西
谢谢 将标记名作为记录的容器以及其中的一个元素加倍会产生问题
BeautifulSoup
原谅了这些问题,如果您无法返回并更改XML结构,您可能希望使用以下方法
将数据分配给变量。当然,这可以从文本文件中读取:
data = '''<data>
<from>A</from>
<to>B</to>
<data>
<name>EXAMPLE ONE</name>
<info>
<some_data>1</some_data>
<more_data>2</more_data>
</info>
<random>
<some_tag>
</foobar>
<foo>
<bar />
</foo>
</random>
</data>
<data>
<name>EXAMPLE TWO</name>
<info>
<some_data>3</some_data>
<more_data>4</more_data>
</info>
<random>
<some_tag>
</foobar>
<foo>
<bar />
</foo>
</random>
</data>
</data>
<data>
<from>C</from>
<to>D</to>
<data>
<name>EXAMPLE</name>
<info>
<some_data>1</some_data>
<more_data>2</more_data>
</info>
<random>
<some_tag>
</foobar>
<foo>
<bar />
</foo>
</random>
</data>
</data>'''
以及该虚拟数据的结果:
{(u'A', u'B'): [{'more_data': u'2',
'name': u'EXAMPLE ONE',
'some_data': u'1'},
{'more_data': u'4',
'name': u'EXAMPLE TWO',
'some_data': u'3'}],
(u'C', u'D'): [{'more_data': u'2', 'name': u'EXAMPLE', 'some_data': u'1'}]}
伟大的差不多就是这样了,我还想提取父级中每个可能的内部数据块。我已经更新了示例代码,使其更加清晰@迈克:我已经根据你编辑的输入数据更新了代码。请注意,最好返回原点并创建格式良好的XML树。我添加了一种将每个块存储在字典中的方法,您可以用现在应该相当简单的方法来检查它。
{(u'A', u'B'): [{'more_data': u'2',
'name': u'EXAMPLE ONE',
'some_data': u'1'},
{'more_data': u'4',
'name': u'EXAMPLE TWO',
'some_data': u'3'}],
(u'C', u'D'): [{'more_data': u'2', 'name': u'EXAMPLE', 'some_data': u'1'}]}