如何使用Python从文本文件中读取元数据(带标签)

时间:2013-11-24 19:33:59

标签: python csv metadata

文本文件开头的数据采用以下格式:

&SRS
<MetaDataAtStart>
multiple=True
Wavelength (Angstrom)=0.97587
mode=assessment
background=True
issid=py11n2g
noisy=True
</MetaDataAtStart>
&END
Two Theta(deg)  Counts(sec^-1)
10.0    41.0
10.1    39.0
10.2    38.0
10.3    38.0

我可以用什么方法提取波长的元数据值? CSV Dictionary阅读器能否正常工作?

2 个答案:

答案 0 :(得分:2)

最简单的解决方案是读取文件的标题:

f = open("data.txt", "r")
for line in f:
    if "</MetaDataAtStart>" in line:
        print "Wavelength data was not found"
        break;
    if "Wavelength" in line:
        print line.split("=")[1]

<强>输出:

0.97587

修改

import re
f = open("data.txt", "r")
regex = re.compile(r'Wavelength \(Angstrom\)=([0-9]+\.?[0-9]*)')
for line in f:
    result = regex.search(line)
print result.group(1)

<强>输出:

0.97587

答案 1 :(得分:0)

使用lxml的BeautifulSoup可以做到这一点。一旦找到带有findAll()的标签,就可以提取数据。在这一点上,Python可以很容易地在\ n上分割()并再次在=上。如果您需要代码示例,请告诉我,我会提供一个。