我有一个文本文件,我试图在python 3中转换为Excel文件。 文本文件有一系列帐户 - 一个文本文件如下所示: 例子 -
PRODUCE_NAME: ABC
PRODUCE_NUMBER: 12345
DATE: 13年12月1日
PRODUCE_NAME: EFG
PRODUCE_NUMBER: 987
DATE: 16年2月16日
TIME: 12时54分00秒
PRODUCE_NAME: XYZ
PRODUCE_NUMBER: 0046
DATE: 10年7月15日
COLOR: 蓝色。
我希望excel文件看起来像这样。 enter image description here
一些代码: `#open text file
op_file = open("Comp_file_1.txt", "r", encoding='windows-1252')
text_file = op_file.read()
##############################################################
# location of CAP WORD: and group them
for mj in re.finditer(r"[A-Z]\w+(:)", text_file):
col_list_start.append(mj.start(0))
col_list_end.append(mj.end(0))
col_list_group.append(mj.group())
#############################################################
# Location of the end of file and delete index 0 of start
while True:
# Advance location by 1.
location = text_file.find(".", location + 1)
# Break if not found.
if location == -1: break
# Display result.
endline = location
col_list_start.append(int(endline))
del col_list_start[0]
##############################################################
# cut out the index of the rows - abc , 12345, 12/1/13
for m in range(len(col_list_end)):
index4.append(file_data2[col_list_end[m]:col_list_start[m]])
##############################################################
# makes a data frame
# and groups the data frame
group_excel_list = {}
for k,v in zip(col_list_group, index4):
group_excel_list.setdefault(k, []).append(v)`
dataframe looks like this
key value
{"PRODUCE_NAME:": [abc, efg, xyz]}
{"PRODUCE_NUMBER:" : [12345, 987, 0046]}
{"DATE:" : [12/1/13, 2/16/16, 7/15/10]}
{"TIME:" : [12:54:00]}
{"COLOR:" [blue]}
df = pd.DataFrame(data=[group_excel_list], columns = col_list_group)
# Create a Pandas Excel writer using XlsxWriter as the engine.
writer = pd.ExcelWriter("Comp_file_1" + '.xlsx', engine='xlsxwriter')
# Convert the dataframe to an XlsxWriter Excel object.
df.to_excel(writer, sheet_name='Sheet1')
# Close the Pandas Excel writer and output the Excel file.
writer.save()
我只获得了一行数据帧。 标题 - PRODUCE_NAME:PRODUCE_NUMBER:日期: 第0行 - [abc,efg,xyz] [12345,987,0046] [12/1/13,2/16 / 16,7 / 15/10]
无论你能给予什么帮助,我们都将不胜感激。
答案 0 :(得分:2)
从您的文本文件中读取您的数据(.txt文件中的列与选项卡分开,我的数据就是这种情况,但当然可能与您的不同!):
import csv
data = []
with open("file_%02d.txt" %fileNumber, 'r') as f:
reader = csv.reader(f, dialect = 'excel', delimiter = '\t')
% reads the rows from your imported data file and appends them to a list
for row in reader:
print row
data.append(row)
将您的数据写入外部文件:
import pandas as pd
newData= pd.DataFrame(data, columns = ['name1','name2',...,'nameN'])
expData.to_csv("new_file_%02d.csv" %fileNum, sep = ';')
这或多或少是我的头脑,但它应该做的伎俩。您可以写出列表中的数据,只需确保列表中的元素数和列名匹配
我希望我帮了一下!
答案 1 :(得分:0)
对不起,我记不起精确的方法,但是如果你使用f = file ...等创建一个文件,并使它成为逗号分隔值(.csv)文件,那么有一种加载方式直接进入excel,以便用逗号分隔的所有项目进入单独的列,并且所有被分割的东西进入单独的行(再次抱歉,我不记得确切的过程)