0

我有一种 XML 文件,其中包含许多相关信息的记录,如下所示

<file>
<record>
<type>a</type>
<number>2</number>
</record>

<record>
<type>b</type>
<number>9</number>
</record>

等等

我希望 BS 读取所有 XML 文件并按列给我结果:

a2

b 9 等

编辑

谢谢大家的参与。我安装了 xml 解析器,我使用的是 bs4 xml 模式。我不再收到错误,但是我得到了:

抗体

2 9

代替

a2

b 9

新代码:

from bs4 import BeautifulSoup
soup = BeautifulSoup(open('file.xml'),"xml")

with open('output.txt') as f: 
   for type1,number in (soup.findall('type'),soup.findall('number')):
     f.write ('%s\t%s\n' % (type1.text, number.text))

第二次编辑:

如果我在 XML 文件中添加第三条记录,我会收到以下错误

回溯(最近一次调用最后一次):文件“multixmlsript.py”,第 8 行,用于 type1,编号在(soup.findAll('type'),soup.findAll('number')):ValueError:值太多打开包装

4

1 回答 1

0
from BeautifulSoup import BeautifulStoneSoup

soup = BeautifulStoneSoup(open('path/to/file'))

with open('/path/to/output.txt', 'w') as f:
    for i in range(len(soup.findAll('type'))):
        f.write ('%s\t%s\n' % (soup.findAll('type')[i].text, soup.findAll('number')[i].text))

您已经将BeautifulSoup它用于 HTML。但是你需要使用BeautifulStoneSoupxml。我希望这会对你有所帮助。

于 2013-07-31T12:58:08.157 回答