我想從下面的這個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