2016-05-12 76 views
0

我有一個包含27個字段且寬度固定的文件。我希望能夠在腳本上運行腳本,並在腳本末尾添加逗號或其他內容,以便我可以輕鬆地將腳本導入到Excel中,而無需每次都手動設置長度。更改固定寬度的文本文件以進行分隔

我能夠將文件讀入Python,但我不知道如何添加逗號。

字段信息:

起始位置:1,21,41,61,81,86,89,95,99,103,183,193,243,293,343,393,423,425, 435,436,437,438,440,442,445,447,450

長度:20,20,20,20,5,3,6,4,4,80,10,50,50,50 ,50,30,2,10,1,1,2,3,2,3,1

回答

2

使用struct讀取固定格式文件和csv生成CSV文件。

1

或者,您可以使用pandas庫。

import pandas as pd 

length = [20, 20, 20, 20, 5, 3, 6, 4, 4, 80, 10, 50, 50, 50, 50, 30, 2, 10, 1, 1, 1, 2, 2, 3, 2, 3, 1] 

pd.read_fwf("input file.txt", widths=length).to_csv("output.csv") 

你需要爲使用的colspecwidths關鍵字參數在pd.read_fwf指定的列寬的佈局方式。更多關於可以發現here

3

你可以做如下,

from itertools import chain 
import csv 

n = 27 # num of fields 
with open('in.csv') as fr, open('out.csv', 'w') as fw: 
    reader = csv.reader(fr) 
    writer = csv.writer(fw) 
    for row in reader: 
     row_ = chain(row, [None] * (n - len(row)) 
     writer.writerow(list(row_)) 
+0

我不知道我完全理解迭代工具鏈都在這裏做什麼。我看到每行有一個n-1刪除27個字段中的一個,但我仍然無法定義字段長度或在字段長度上添加分隔符 – Tom

+0

@Tom我沒有明白你的意思通過'在字段長度添加分隔符'。 'itertools.chain'將迭代器放回原處。有'n'字段'len(row)'在那裏,你需要添加'n-len(row)'more。你評論過的「n-1」來自哪裏? –

+0

@C熊貓,我想我不瞭解的是我如何用這個for循環定義27個字段的長度。 – Tom