我的文本文件有20页长,我需要打印特定数据
我的文本文件如下:
123mcx version 1.5.0 ld=fri Apr 09 08:00:00 MST 2008 12/10/12 11:59:03
***************************************************************************************
1- c ==== CELLS ====
2- 1 0 1 $ outside
3- 2 102 -0.001 -1 23 51
4- c
5- 21 3 -4.15e-4 -21 $ detector
6- 22 5 -11.34 -22 21 $ Pb
7- 23 6 -7.87 -23 22 $ Fe tube
8- c
9- 50 7000 -1.7 -51 41
multiplier bins
att constant material reactions or material-rho*x pairs
1.02400E+00 3 103
time bins
-i to 5.00000E+02 shakes
5.00000E+02 to 1.06000E+03 shakes
1.06000E+03 to 1.69000E+03 shakes
1.69000E+03 to 2.40000E+03 shakes
2.40000E+03 to 3.19000E+03 shakes
3.19000E+03 to 4.08000E+03 shakes
4.08000E+03 to 5.08000E+03 shakes
5.08000E+03 to 6.19000E+03 shakes
6.19000E+03 to 7.43000E+03 shakes
7.43000E+03 to 8.84000E+03 shakes
multiplier bin: 1.02400E+00 3 103
time
5.0000E+02 5.54627E-06 0.0004-------- [I only need this data start here]
1.0600E+03 2.40573E-06 0.0018
1.6900E+03 2.11609E-06 0.0026
2.4000E+03 2.04138E-06 0.0033
3.1900E+03 2.01640E-06 0.0038
4.0800E+03 2.07022E-06 0.0043
5.0800E+03 2.11266E-06 0.0047
6.1900E+03 2.16806E-06 0.0050
7.4300E+03 2.24147E-06 0.0053
8.8400E+03 2.32872E-06 0.0056
1.0400E+04 2.36765E-06 0.0060
1.2200E+04 2.50930E-06 0.0061
1.4100E+04 2.43235E-06 0.0065
1.6400E+04 2.69267E-06 0.0066-----[end]
1analysis of the results in the tally fluctuation chart bin
(tfc) for tally 14 with nps =1598425200 print table 160
normed average 7.174350E-05 unnormed history = 8.85335E-01
estimated error = 0.0014 estimated variance of the variance = 0.0000
我需要跳过所有数据并仅打印我需要的内容 像:
5.0000E+02 5.54627E-06 0.0004
1.0600E+03 2.40573E-06 0.0018
1.6900E+03 2.11609E-06 0.0026
2.4000E+03 2.04138E-06 0.0033
3.1900E+03 2.01640E-06 0.0038
4.0800E+03 2.07022E-06 0.0043
5.0800E+03 2.11266E-06 0.0047
6.1900E+03 2.16806E-06 0.0050
7.4300E+03 2.24147E-06 0.0053
8.8400E+03 2.32872E-06 0.0056
1.0400E+04 2.36765E-06 0.0060
1.2200E+04 2.50930E-06 0.0061
1.4100E+04 2.43235E-06 0.0065
1.6400E+04 2.69267E-06 0.0066
之后,我只需要添加第二个列号,如
(5.54627E-06 + 2.40573E-06 + 2.11609E-06 + ...+ 2.69267E-06) = 3.504897E-05
请帮助我知道如何跳过数据并仅打印我想要的
谢谢
答案 0 :(得分:1)
在每一行上使用正则表达式:
5.0000E + 02 5.54627E-06 0.0004看起来像:
import re
goodLineRegex = r'\d+\.\d+E[+-]\d+\s{3}\d+\.\d+E[+-]\d+\s\d+\.\d+'
for line in file:
m = goodLineRegex.match(line)
if m is not None:
do_something(line)
答案 1 :(得分:0)
您可以使用regular expressions查找符合搜索条件的文字
答案 2 :(得分:0)
data = numpy.genfromtxt('filename', skip_header=?, skip_footer=?, usecols=[1])
print data.sum()
skip_header:int,可选 要在文件开头跳过的行数。
skip_footer:int,可选 要在文件末尾跳过的行数
usecols:sequence,optional
要读取哪些列,其中0为第一列。例如,
usecols = (1, 4, 5)
将提取第2,第5和第6列。
你也可以将它与基于正则表达式的方法结合起来,因为genfromtxt将使用生成器来代替文件。