将文本文件转换为excel python 3

时间:2017-12-01 16:54:37

标签: python excel dataframe text

我有一个文本文件,我试图在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]

无论你能给予什么帮助,我们都将不胜感激。

2 个答案:

答案 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,以便用逗号分隔的所有项目进入单独的列,并且所有被分割的东西进入单独的行(再次抱歉,我不记得确切的过程)

See