假设我有一些.txt文件作为实验测量的输出:
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,我该怎么做?
感谢
答案 0 :(得分:3)
您可以像平常一样阅读文件。 只需跳过前两行并对第3行和第4行进行字符串操作
类似
before = rows[0] //first row
before = before[21:-2]
如果我正确计算会给你数字。如果你想要它们作为数字而不是字符串,你可以
before = float(before)
换句话说,只需在导入行后使用字符串操作。
答案 1 :(得分:1)
一种选择是使用正则表达式(REGEX):
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 :(得分:1)
这只是为了让斯蒂尔先生的回答更加明确。
import typing
type Ticker str # How to do this? I used golang notation. How do you do it in python?
Report = typing.Dict[Ticker, typing.List]
输出:
with open('physicist.txt') as f:
f.readline()
f.readline()
print(float(f.readline()[21:-3].strip()))
print(float(f.readline()[20:-3].strip()))