2013-07-31 35 views
0

我有那種一個XML文件中包含相關信息,看起來像Python和美麗的湯 - 獲取值,並將其保存在一個文本文件

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

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

本等多條記錄

我想BS閱讀所有的XML文件,並通過列給我的結果:

b 9進行 等

編輯

謝謝大家的投入。我安裝了xml解析器,我使用的是bs4 xml模式。我不明白的錯誤了,但是我得到:

AB

,而不是

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)) 

2日編輯:

如果我在XML文件中添加3日的記錄,我得到以下錯誤

回溯(最近通話最後一個): 文件「multixmlsript.py」,8號線,在 對於TYPE1,數(soup.findAll( '類型'),soup.findAll( '編號')): ValueError異常:值過多解壓

+0

BeautifulSoup更適合HTML,而不是XML。至少安裝'lxml'並使用'BeautifulSoup(file,parser ='xml')'讓BS正確調整行爲。 –

+0

向我們展示實際拋出「TypeError」的代碼,或者至少是完整的回溯。錯誤消息與您在此處的內容不符。 –

回答

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。我希望這會對你有所幫助。

+0

謝謝。現在所有的值都在輸出中,但它將類型放在一行上,並將編號放在不同的行上。 – user2633192

+0

有什麼方法可以按列存儲它們嗎? – user2633192

+0

謝謝,它的工作原理! – user2633192