Python和美丽的汤 - 获取值并将其保存在文本文件中

时间:2013-07-31 11:18:50

标签: python beautifulsoup

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

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

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

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

a 2

b 9 等

编辑

谢谢大家的推荐。我安装了xml解析器,我使用的是bs4 xml模式。我得到了错误但是我得到了错误:

a b

2 9

而不是

a 2

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文件中添加第3条记录,则会出现以下错误

追踪(最近一次通话):   File&#34; multixmlsript.py&#34;,第8行,in     for type1,number in(soup.findAll(&#39; type&#39;),soup.findAll(&#39; number&#39;)): ValueError:要解压缩的值太多

1 个答案:

答案 0 :(得分: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。但是你需要将BeautifulStoneSoup用于xml。我希望这会对你有所帮助。