文本文件开头的数据采用以下格式:
&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阅读器能否正常工作?
答案 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上分割()并再次在=上。如果您需要代码示例,请告诉我,我会提供一个。