我想从下面的这个ASCII文件读出某些行,并将其保存到另一个文件。例如,我想读出从列2开始的具有值17的行。如果列2的值为17,那么只有该行进入输出文件。比较价值和打印
到目前为止,我有以下代码,
import numpy as np
datafilename = 'pol_17.txt'
g = np.genfromtxt(datafilename, skiprows=6, usecols=(1, 2, 3, 4, 5, 6,7),delimiter=None, dtype=[('f0', '<i4'), ('f1', '<i4'), ('f2', '<i4'), ('f3', '<f8'), ('f4', '<f8'), ('f5', '<f8'), ('f6', '<f8')])
if g['f0']==17:
print[g]
在输出中,我得到 “ValueError异常:” 从蟒蛇。
输入文件格式如下。
# Energy = 4.92758E+03
# ESigma = 2.80000E+00
# ETrans = 3.78310E+02
# Density = 1.00000E+00
# IDR = -1
7 16 0 -1 6.49729E+03 5.59241E-04 1.177E+00 4.511E-01
7 16 1 -1 6.47947E+03 4.05646E-05 1.177E+00 4.511E-01
7 17 0 -1 6.50710E+03 7.44345E-02 8.230E-01 -6.451E-01
7 17 1 -1 6.48929E+03 2.11547E-03 8.230E-01 -6.451E-01
7 17 2 -1 6.48454E+03 3.67490E-03 1.044E+00 1.271E-01
7 17 3 -1 6.47442E+03 8.22948E-05 1.221E+00 5.434E-01
7 18 3 -1 6.47664E+03 3.25040E-03 1.000E+00 0.000E+00
7 18 4 -1 6.46889E+03 4.90487E-04 1.000E+00 0.000E+00
7 18 13 -1 6.26433E+03 2.38729E-05 1.000E+00 0.000E+00
7 18 14 -1 6.25109E+03 5.84543E-06 1.000E+00 0.000E+00
要明白这是如何工作以及为什么OP方法不对,做'打印G [“F0”] == 17'和未来'打印g [g ['f0'] == 17]' – askewchan 2014-09-01 16:57:38
我有更多像上面的文件不同的值。例如,文件“pol_17.txt”的编号为17,文件中的有用行也是从17开始。而且有更多文件的范围从17到52,具有相同的格式。所以我想做一个循环,它只从每个文件中获取有用的行,然后将其保存到主文件中。 我有它的小工作程序,但它将行作为一个字符串。我想要一个格式。该计划是在第二个评论。 – chin2 2014-09-01 17:21:58
'txtfile1 = open(“output_pol。(17,53):' 'gname = os.path.normpath('/ home/data_%s/pol_%d.txt'%state,dec)' ' )' 'g = np.genfromtxt(gname,skiprows = 7,usecols =(1,2,3,4,5,6,7),delimiter = None,dtype = [('f0','
chin2
2014-09-01 17:22:39