繁体   English   中英

解析数据集的字符串

[英]Parsing a string for data sets

我有一个长字符串,其中包含需要分开/提取以进行评估的信息集。

作为一个初学者程序员,我知道各种解析操作,例如split()append()remove()等-但我正在努力提出一种将它们组合以提取相关数据的逻辑方法...

长串...

"<Sets X="s"><B s="1" e="2176" t="-2.0774E4" r="1" /><B s="2177" e="8982" t="-1.8597E4" r="1" /><B s="8983" e="10393" t="-150.22" r="1" /></Sets>"

包含3组数据需要存储为浮点值

[Set1] s = 1 e = 2176 t = -20774 r = 1

[Set2] s = 2177 e = 8982 t = -18597 r = 1

[Set3] s = 8983 e = 10393 t = -150.2 r = 1

我希望将每组数据存储为一个列表

Set1 = [1,2176,-20774,1]
Set2 = [2177,8982,-18597,1]
Set3 = [2178,10393,-150.2,1]

注意:套数可以变化

使用内置的ElementTree库从xml中提取数据:

import xml.etree.ElementTree as ET


data = '<Sets X="s"><B s="1" e="2176" t="-2.0774E4" r="1" /><B s="2177" e="8982" t="-1.8597E4" r="1" /><B s="8983" e="10393" t="-150.22" r="1" /></Sets>'

tree = ET.fromstring(data)
for b in tree.findall('.//B'):
     print map(float, itemgetter(*'setr')(b.attrib))

印刷品:

[1.0, 2176.0, -20774.0, 1.0]
[2177.0, 8982.0, -18597.0, 1.0]
[8983.0, 10393.0, -150.22, 1.0]

注意:这是先前答案的扩展...

(@alecxe和@Jon Clements的道具)

为了标记每个数据集并以易于访问的格式存储结果

import xml.etree.ElementTree as ET
import operator

data = '<Sets X="s"><B s="1" e="2176" t="-2.0774E4" r="1" /><B s="2177" e="8982" t="-1.8597E4" r="1" /><B s="8983" e="10393" t="-150.22" r="1" /></Sets>'

dataDictionary = {}

tree = ET.fromstring(data)
setNumber = 0

for b in tree.findall('.//B'):
    setNumber = setNumber + 1
    dataSet = map(float, operator.itemgetter(*'setr')(b.attrib))
    dataDictionary[setNumber] = dataSet
    print "This is dataset " +str(setNumber)
    print dataSet

print ""
print "This is the Dictionary of datasets"
print dataDictionary

这将导致以下输出-易于将来操作使用:)

This is dataSet 1
[1.0, 2176.0, -20774.0, 1.0]
This is dataSet 2
[2177.0, 8982.0, -18597.0, 1.0]
This is dataSet 3
[8983.0, 10393.0, -150.22, 1.0]

This is the dataDictionary
{1: [1.0, 2176.0, -20774.0, 1.0], 2: [2177.0, 8982.0, -18597.0, 1.0], 3: [8983.0, 10393.0, -150.22, 1.0]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM