幕布斯7119047
你可以试试这个来获得所需的数据框:with open(r'test1.txt','r') as file: data=file.read().split('\n\n')data=[i.split('\n') for i in data]df=pd.DataFrame(data,columns=['Year','Name','Stamina','Agility','Str','Res'])print(df)输出: Year Name ... Str Res0 2020 Grum Grum ... Strength: 20.5% Resistances: 20-21-301 2020 Mondo Silo ... Strength: 10.5% Resistances: 20-21-202 2020 Grum Grum ... Strength: 20.5% Resistances: 20-21-303 2020 Mondo Silo ... Strength: 10.5% Resistances: 20-21-20并编写.txt具有不同行数且具有相同结构的文件列表的数据帧,您可以尝试:选项1import pandas as pdfiles=['test1.txt','test2.txt'] #list of filesdf=pd.DataFrame(columns=['Year','Name','Stamina','Agility','Str','Res']) #create the dataframefor file in files: #we open each file with open(r'path_of_files'+file,'r') as file_r: data=file_r.read().strip().split('\n\n') data=[i.split('\n') for i in data if i!=''] #get the rows print(data) s = pd.DataFrame(data, columns=df.columns) df =pd.concat([df, s], ignore_index=True) #we append the new rows to the dataframe print(df)df.to_csv(r'test3.txt', sep='|', index=False) #write the final dataframe to the output file('test3.txt'), with '|' as separator 选项 2import pandas as pdfiles=['test1.txt','test2.txt'] #list of filesfor file in files: #we open each file with open(r'path_of_files'+file,'r') as file_r, open(r'test3.txt', 'a') as fout: data=file_r.read().strip().split('\n\n') data=[i.split('\n') for i in data if i!=''] df=pd.DataFrame(data,columns=['Year','Name','Stamina','Agility','Str','Res']) #create a dataframe with the data of the current file if files.index(file)==0: fout.write(df.to_string( index = False)) #we let header=true to the first iteration to write the columns, and also write the data else: fout.write(df.to_string(header = False, index = False)) #we write the dataframe without the index and the columns names fout.write('\n') #a newline to place correctly the next rows示例对于一些虚拟文件,例如下面的文件 ( test1.txt,test2.txt),您可以看到test3.txt带有两个选项的结果 ( ):测试1.txt2020Grum GrumStamina: 20Agility: 23Strength: 20.5%Resistances: 20-21-302020Mondo SiloStamina: 23Agility: 13Strength: 10.5%Resistances: 20-21-20测试2.txt2020Grum GrumStamina: 20Agility: 23Strength: 20.5%Resistances: 20-21-302020Mondo SiloStamina: 23Agility: 13Strength: 10.5%Resistances: 20-21-202020Mondo SiloStamina: 23Agility: 13Strength: 10.5%Resistances: 20-21-202020Mondo SiloStamina: 23Agility: 13Strength: 10.5%Resistances: 20-21-20带有选项 1 的test3.txt(输出文件)Year|Name|Stamina|Agility|Str|Res2020|Grum Grum|Stamina: 20|Agility: 23|Strength: 20.5%|Resistances: 20-21-302020|Mondo Silo|Stamina: 23|Agility: 13|Strength: 10.5%|Resistances: 20-21-202020|Grum Grum|Stamina: 20|Agility: 23|Strength: 20.5%|Resistances: 20-21-302020|Mondo Silo|Stamina: 23|Agility: 13|Strength: 10.5%|Resistances: 20-21-202020|Mondo Silo|Stamina: 23|Agility: 13|Strength: 10.5%|Resistances: 20-21-202020|Mondo Silo|Stamina: 23|Agility: 13|Strength: 10.5%|Resistances: 20-21-20带有选项 2 的test3.txt(输出文件) Year Name Stamina Agility Str Res 2020 Grum Grum Stamina: 20 Agility: 23 Strength: 20.5% Resistances: 20-21-30 2020 Mondo Silo Stamina: 23 Agility: 13 Strength: 10.5% Resistances: 20-21-20 2020 Grum Grum Stamina: 20 Agility: 23 Strength: 20.5% Resistances: 20-21-30 2020 Mondo Silo Stamina: 23 Agility: 13 Strength: 10.5% Resistances: 20-21-20 2020 Mondo Silo Stamina: 23 Agility: 13 Strength: 10.5% Resistances: 20-21-20 2020 Mondo Silo Stamina: 23 Agility: 13 Strength: 10.5% Resistances: 20-21-20
红颜莎娜
如果您将文本文件保持在相同的格式并在组之间换行,这应该适合您:import xlsxwriteritems = []# parse through .txt filewith open('file.txt', 'r') as r: text = list(r.read().splitlines()) while text.count('') != 0: text.remove('') x = 0 while True: items.append([]) for num in range(0, 6): items[x].append(text[0]) text.remove(text[0]) x += 1 if len(text) == 0: break print(items)# Starting worksheetworkbook = xlsxwriter.Workbook('example.xlsx')worksheet = workbook.add_worksheet()row = 0# Writing column titlestitles = ['Year', 'Name', 'Stamina', 'Agility', 'Str', 'Res']for i in range(0, 6): worksheet.write(row, i, titles[i])# fills in data from parsed .txt filex, row = 0, 1while True: for i in range(0, 6): cur = items[x][0] worksheet.write(row, i, cur) items[x].remove(cur) print(items) row += 1 x += 1 print('hi') if len(items) == x: break# Closes workbookworkbook.close()