将固定宽度txt转换为制表符分隔的txt

时间:2015-11-26 17:16:33

标签: python data-manipulation fixed-width tab-delimited-text

我有一个固定宽度的txt input.txt,看起来像

12345 1 23
23 12 2 11

我有一个单独的文件fixed-width.txt,解释每列是如何分开的。

1 2
2 3
3 2
4 3

第一列有2个字母,第二列有3个字母,依此类推。所以我需要将input.txt转换为

12\t345\t 1\t 23\t\n
23\t 12\t 2\t 11\t\n

我尝试将固定宽度直接导入MatLab或Python Pandas,但失败了。所以我在这里询问如何将其转换为制表符分隔的txt。

1 个答案:

答案 0 :(得分:1)

import pandas as pd
fmt = pd.read_csv('fixed-width.txt', delimiter=' ', 
                  header=None, names=['field', 'width'])
df = pd.read_fwf('input.txt', widths=fmt['width'], header=None)

要以制表符分隔的形式输出,您可以执行

df.to_csv('output.txt', sep='\t')