<p>以<code>BeautifulSoup</code>为例,让您从模块开始:</p>
<pre><code>data = '''
<sheet>
<name>7_managementHosts</name>
<data>
<name>MgtHosts</name>
<key>
<name>Rack U-Location</name>
<value>U30</value>
<value>U29</value>
<value>U28</value>
</key>
<key>
<name>Default Component Name</name>
<value>sms01</value>
<value>sms02</value>
<value>sms03</value>
</key>
<key>
<name>DNS hostname (FQDN)</name>
<value>sms01.de1000.local</value>
<value>sms02.de1000.local</value>
<value>sms03.de1000.local</value>
</key>
<key>
<name>DNS suffix for management interface</name>
<value>de1000.local</value>
<value>de1000.local</value>
<value>de1000.local</value>
</key>
<key>
<name>Keyboard layout</name>
<value>US Default</value>
<value>US Default</value>
<value>US Default</value>
</key>
<key>
<name>root user password</name>
<value>myPassword</value>
<value>myPassword</value>
<value>myPassword</value>
</key>
'''
from bs4 import BeautifulSoup
data = BeautifulSoup(data, 'lxml')
parsed = [[v.text for v in key.select('name, value')] for key in data.select('key')]
# just for pretty printing, all the data are in `parsed` variable
from textwrap import shorten
for row_num, row in enumerate(zip(*parsed), 0):
if row_num == 0:
print(''.join('{: ^25}'.format(shorten(d, 25)) for d in ['Row Number'] + list(row)))
else:
print(''.join('{: ^25}'.format(shorten(d, 25)) for d in [str(row_num)] + list(row)))
</code></pre>
<p>印刷品:</p>
<pre><code> Row Number Rack U-Location Default Component Name DNS hostname (FQDN) DNS suffix for [...] Keyboard layout root user password
1 U30 sms01 sms01.de1000.local de1000.local US Default myPassword
2 U29 sms02 sms02.de1000.local de1000.local US Default myPassword
3 U28 sms03 sms03.de1000.local de1000.local US Default myPassword
</code></pre>