在pythonparsingexcel

所以我现在的问题是读一个.txt文件,并提取具体的数据。 这些数据将被写入一个excel文件中,现在这些行将成为列,反之亦然。 到目前为止,我已经能够读取文件,并创build与列的Excel表,但没有数据传输。 下面是它读取的数据以及写入excel的内容。

[' O/F=7.1800E+00 PERCENT FUEL= 12.2249 EQUIVALENCE RATIO=5.5559E-01 DENSITY=9.5028E-01'] [] [' CHAMBER THROAT EXIT EXIT'] [' PC/P 1.0000 1.7346 1.0083 62.915'] [' P', ' PSIA 1500.0 864.8 1487.7 23.84'] [' T', ' DEG R 5886 5555 5880 3494'] [' H', ' BTU/LB -446.6 -674.1 -450.1 -1819.9'] [' S', ' BTU/(LB)(R) 2.3395 2.3395 2.3395 2.3395'] [' DEN (LBM/FT3) 6.50E-01 4.01E-01 6.45E-01 1.81E-02'] [' '] [' M', ' MOL WT 27.357 27.616 27.361 28.499'] [' (DLV/DLP)T -1.01645 -1.01277 -1.01639 -1.00034'] [' (DLV/DLT)P 1.3300 1.2733 1.3292 1.0126'] [' CP', 'BTU/(LB)(R) 0.9274 0.8626 0.9265 0.4371'] [' CP GAS(SF) 0.4353 0.4326 0.4353 0.4041'] [' GAMMA GAS(SF) 1.2001 1.1993 1.2001 1.2084'] [' GAMMA (S) 1.1390 1.1395 1.1390 1.1949'] [' SON VEL', 'FT/SEC 3490.4 3375.7 3488.6 2698.9'] [' MU', 'LBF-S/FT2 2.01E-06 1.93E-06 2.01E-06 1.41E-06'] [' K', 'LBF/S-DEGR 3.16E-02 3.01E-02 3.16E-02 2.03E-02'] [' PRANDTL NO 0.69205 0.69371 0.69207 0.70189'] [' MACH NUMBER 0.0000 1.0000 0.1202 3.0726'] [' '] [' AE/AT 1.0000 4.9993 9.0000'] [' CSTAR', ' FT/SEC 5139 5139 5139'] [' CF VAC 1.233 1.757'] [' CF 0.657 1.614'] [' IVAC', 'LBF-S/LBM 197.00 280.59'] [' I', ' LBF-SEC/LBM 104.92 257.74'] [' MOL WT(MIX) 27.357 27.616 27.361 28.499'] 

以下是我到目前为止的代码

 import csv import sys import xlsxwriter import pandas as pd import argparse def parse_args(): parser = argparse.ArgumentParser(description='Read POST run outputs.') parser.add_argument('infile', type=argparse.FileType('r'), help='POST file to be analyzed.') parser.add_argument('outfile', type=argparse.FileType('w'), help='Output xlsx file.') return parser.parse_args() def read_post_file(LOX_CH4_GG_5zn.txt, LOX_CH4_GG_5zn.csv): f = open(LOX_CH4_GG_5zn.txt,"r") csv_f = csv.reader(f) relevantData = False firstDataSet = True for row in csv_f: string = str(row) if 'O/F' in string and firstDataSet: relevantData = True elif 'MOLE FRACTIONS' in string: relevantData = False firstDataSet = False if firstDataSet and relevantData: print (string) f.close() if __name__ == "__main__": args = parse_args() read_post_file(args.infile.name, args.outfile.name) workbook = xlsxwriter.Workbook('Com.xlsx') worksheet = workbook.add_worksheet() worksheet.set_column('A:A', 20) bold = workbook.add_format({'bold': True}) worksheet.write('A1', 'O/F', bold) worksheet.write('B1', 'PC/P', bold) worksheet.write('C1', 'P,PSIA', bold) worksheet.write('D1', 'T,DEG(R)', bold) worksheet.write('E1', 'H,BTU/LB', bold) worksheet.write('F1', 'S,BTU/(LB)(R)', bold) worksheet.write('G1', 'DEN,LBM/FT3', bold) worksheet.write('H1', 'M,MOL WT', bold) worksheet.write('I1', '(DLV/DLP)T', bold) worksheet.write('J1', '(DLV/DLP)P', bold) worksheet.write('I1', 'CP,BTU/(LB)(R)', bold) worksheet.write('K1', 'CP GAS,SF', bold) worksheet.write('L1', 'GAMMA GAS,SF', bold) worksheet.write('K1', 'GAMMA,S', bold) worksheet.write('K1', 'SON VEL,FT/SEC', bold) worksheet.write('K1', 'MU,LBF-S/FT2', bold) worksheet.write('K1', 'K,LBF/S-DEG(R)', bold) worksheet.write('K1', 'PRANDTL NO', bold) worksheet.write('K1', 'MACH NUMBER', bold) worksheet.write('K1', 'AE/AT', bold) worksheet.write('K1', 'CSTAR,FT/SEC', bold) worksheet.write('K1', 'CF VAC', bold) worksheet.write('K1', 'CF', bold) worksheet.write('K1', 'IVAC, LBF-SEC/LBM', bold) worksheet.write('K1', 'I,LBF-SEC/LBM', bold) worksheet.write('K1', 'MOL WT(MIX)', bold) workbook.close() 

任何帮助都非常赞赏这一点。

input1

输出是问题开始时发布的内容。

这是一个小的工作原型,展示了如何使用pandas来做到这一点。

由于OP没有提供input数据的样本,我已经生成了一个样本数据框:8列和20行。 在这个例子中,我将只select3列('A','C','H')并转置它们(将列转换为行)。

码:

 import six import numpy as np import pandas as pd # generate random DataFrame with 8 columns and 20 rows sample = pd.DataFrame(np.random.randint(0,100,size=(20, 8)), columns=list('ABCDEFGH')) csv_str = six.StringIO() sample.to_csv(csv_str, sep=';', index=False) print('sample data\n') print(csv_str.getvalue()) # save sample data into CSV file: 'sample.csv' sample.to_csv('sample.csv', sep=';', index=False) # create DF from sample data (we want to use only the following columns: 'A' 'C' 'H') df = pd.read_csv('sample.csv', sep=';', usecols=['A','C','H']) # transpose input DF out_df = df.T print(out_df) # save result DF as excel file xlwriter = pd.ExcelWriter('out.xlsx') out_df.to_excel(xlwriter, sheet_name='Output', index=True) xlwriter.save() 

输出:

 sample data A;B;C;D;E;F;G;H 51;81;17;32;94;81;18;74 37;95;13;68;83;55;26;23 5;76;91;11;71;93;17;58 42;11;86;52;44;39;82;90 20;85;25;13;58;87;18;68 49;64;25;15;19;32;49;85 40;11;91;40;47;73;3;37 91;67;97;21;71;56;96;86 88;40;98;15;21;8;17;74 22;64;28;34;8;14;2;21 42;34;50;69;48;5;56;23 67;97;89;70;81;50;8;75 96;95;81;11;48;63;35;74 36;50;84;2;99;56;25;69 35;48;85;84;80;51;26;23 29;53;50;21;13;40;55;92 33;63;40;77;47;91;71;73 69;18;15;80;83;4;23;84 51;80;72;60;23;56;45;48 55;4;60;87;28;82;14;63 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 \ A 51 37 5 42 20 49 40 91 88 22 42 67 96 36 35 29 33 69 51 C 17 13 91 86 25 25 91 97 98 28 50 89 81 84 85 50 40 15 72 H 74 23 58 90 68 85 37 86 74 21 23 75 74 69 23 92 73 84 48 19 A 55 C 60 H 63 

生成样本CSV文件

输出Excel文件

@ Z_Russ89,我会使用你的实际input/输出数据,如果你会张贴样本input和期望的输出,但你可以使用这个例子作为一个起点。