将文本文件转换为带列的CSV文件



我正在尝试将文本文件转换为CSV,以简化其他应用程序的工作流程。我遇到的问题是,提供的文本文件在文件中有多余的空间,并且在使用pandas导出为CSV时读取到一列中。我试过了指定列的名称作为参数,但它不工作。

文本文件是这样读的,

85350   5211 APPLE LN               O                                                                                                                                                                     
85805   201 ORANGE ST               I                                                                                                                                                                     
84412   1313 BANANA RD              I 

导出为CSV格式,如下所示,

85350 5211 APPLE LN O,
85805 201 ORANGE ST I,
84412 1313 BANANA RD I

我希望导出的CSV有列,看起来类似于这样,列是数字地址In_Out,

Number,Address,In_Out
85350,5211 APPLE LN,O
85805,201 ORANGE ST,I
84412,1313 BANANA RD,I

pandas有一个读取固定宽度文本文件的方法。如果默认的推断列不正确,还有其他参数来指示列的宽度,但在这种情况下它可以工作:

import pandas as pd
df = pd.read_fwf('input.txt', header=None)
df.to_csv('output.csv', index=False, header=['Number','Address','In_Out'])

output.csv:

Number,Address,In_Out
85350,5211 APPLE LN,O
85805,201 ORANGE ST,I
84412,1313 BANANA RD,I

问题是您的文件有空格,但地址也有空格。但是第一列和最后一列没有所以你可以这样写:

import sys
for line in sys.stdin:
line = line.strip()
left, right = line.split( ' ', 1 )
mid, right = right.rsplit( ' ', 1 )
print( ",".join( [left,mid,right] ) )

,它会给你这个:

$ python test.py < data.file
85350,  5211 APPLE LN              ,O
85805,  201 ORANGE ST              ,I
84412,  1313 BANANA RD             ,I

但是你也可以尝试pandas read_fwf,因为你的文件看起来是固定宽度的。

>>> a = pandas.read_fwf( 'data.file', widths=[8,28,1], names=('Zip','Address','Status') )
>>> a
Zip         Address Status
0  85350   5211 APPLE LN      O
1  85805   201 ORANGE ST      I
2  84412  1313 BANANA RD      I
rows=[]
#Open csv module create the file to write it to etc etc etc
with open('file.txt') as f:
row=[]
for line in f.readlines():#gets each and every line from the file

words=line.split()#splitting each word at space
row=[words[0],f"{words[1]} {words[2]} {words[3]}",words[4]]
rows.append(row)#appending to the rows list
csv.writerows(rows)

相关内容

  • 没有找到相关文章

最新更新