Python - 读取空格分隔字符串中的数字

时间:2016-03-10 16:52:56

标签: python xml-parsing

我有一个使用etree读取xml文件时得到的值列表:

[['0']
['0 1.56E-013 2.22E-014 0 0 0']
['-2.84E-014 1.42E-014 2.56E-015  0 0 0']
['0 0 0 0 0 0']
['0 0 0 0 0 0']].

有人可以帮助我将每个值附加到列表中吗? 像output =

之类的东西
[0,0,1.56E-013,2.22E-014,0,0,0,-2.84E-014,1.42E-014,2.56E-015,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

我尝试使用splitlines()从xml读取时也使用strip(' \ n')但我仍然可以获得上述格式的值。

提前谢谢

我已经从xml和我的代码中添加了一个片段:

<Data name="IC_001" id="2">
<Step type="IC">
0
0 1.56E-013 2.22E-014 0 0 0
-2.84E-014 1.42E-014 2.56E-015 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
</Step>
</Data>

我的代码:

import xml.etree.ElementTree as ET
tree = ET.parse('test2.xml')
root = tree.getroot()
temp = root.findall("./Step")
for item in temp:
    values = item.text.strip('\n').splitlines()
print values

我的目标是将每个号码都列入一个列表。 我真的很感激任何帮助

2 个答案:

答案 0 :(得分:1)

解决:

import xml.etree.ElementTree as ET
def test():
    tree = ET.parse('test2.xml')
    root = tree.getroot()
    temp = root.findall("./Step")
    for item in temp:
        values = item.text.strip('\n').splitlines()
    values_out = process_step_data(values)
    print values_out

def process_step_data(output_step):
    step_result = []
    for i in range(len(output_step)):
        for num_str in output_step[i].splitlines():
            x = [float(j) for j in num_str.split()]
            step_result = step_result + x
    return step_result

答案 1 :(得分:0)

使用split()默认情况下在空白处拆分,而不是使用splitlines()来查找行尾字符。 Split会将各个数字的列表作为字符串返回。