2016-05-12 89 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

相关问题