如何从一个.txt文件的注释读取数值数据为numpy的
问题描述:
假设我有一些.txt文件作为实验测量输出:如何从一个.txt文件的注释读取数值数据为numpy的
Date: 160818
double polished Si 300 microns
Power before sample: 62.7uW
Power after sample: 33.0uW
position y1 y2 power
1.00E-01 1.93E+07 1.17E+06 2.32E-05
2.00E-01 1.92E+07 1.16E+06 2.32E-05
3.00E-01 1.93E+07 1.16E+06 2.32E-05
4.00E-01 1.94E+07 1.16E+06 2.30E-05
5.00E-01 1.94E+07 1.16E+06 2.32E-05
6.00E-01 1.93E+07 1.16E+06 2.32E-05
7.00E-01 1.94E+07 1.16E+06 2.32E-05
8.00E-01 1.94E+07 1.16E+06 2.32E-05
9.00E-01 1.93E+07 1.16E+06 2.32E-05
1.00E+00 1.93E+07 1.16E+06 2.32E-05
我知道如何忽略顶部的评论并使用np.loadtxt(... ,skiprows=5)
导入数据。但是让我们假设我想在62.7和33.0之前的样本中导入权力值,我该怎么做?
谢谢
答
一种选择是使用正则表达式(正则表达式):
import re
保存每一行文字都放进名单:
with open ("power.txt", "r") as myfile:
data=myfile.readlines()
迭代通过列表来查找匹配的“数字串” :
match = list()
for i in range(len(data)):
match1 = re.search('[0-9]+[.][0-9]+', data[i]) # REGEX
# Matching numbers are appended
if match1:
match.append(match1[0])
然后,您可以轻松地遍历新列表以打印出数字:
for i in range(len(match)):
print(match[i])
您可以看到,此方法还允许您获取表中的数字。
答
您可以像正常阅读文件。 就跳过第2行,做行3字符串操作和4
像
before = rows[0] //first row
before = before[21:-2]
如果我计算正确会给你的数字。如果你想让它们作为数字而不是字符串,你可以只用
before = float(before)
换句话说,只要你导入了行就使用字符串操作。
答
这只是为了让斯蒂尔先生的回答稍微更加明确。
with open('physicist.txt') as f:
f.readline()
f.readline()
print(float(f.readline()[21:-3].strip()))
print(float(f.readline()[20:-3].strip()))
输出:
62.7
33.0
使用常规的Python文件读取和解析。 – hpaulj