2015-11-05 97 views
-2

我有一些应该固定宽度和空间分隔的纯文本数据文件。但是,最右边的列很少被填充,对于那些缺少值的行,该行的文本停在最后一个填充列。由于字符停止文件不是真正固定的宽度,并且没有任何分隔符或缺少符号(NAs)。用空格填充剩余行以达到固定宽度

当我检查标头我看到的最大行结构将是

  • 17列具有16个位

  • 77炭为数据赋予的93个包括定界符

  • 固定宽度

    (4,2,2,2,2,5,5,3,8,5,7,4,4,6,6,6,6)的柱结构

我想要做的是在每行的末尾添加93-POPULATED_LENGTH空格,以便我可以将它解析为固定宽度进行数据分析。 Bash或轻量级Python的解决方案将是理想的。

+0

请为样本输入添加样本输入和您想要的输出到您的问题。 – Cyrus

+0

SO不是代码写入服务。请展示你的尝试。 – Pynchia

+0

Bash要做到这一点可能比告诉我离开的帖子短。 – e5haffer

回答

0

使用Python,这应该做

MAXCOLS = 93 
with open('words.txt') as in_f, open('outfile.txt', 'w') as out_f: 
    for line in in_f: 
     line = line.rstrip() 
     l = len(line) 
     padline = MAXCOLS-l 
     out_line = line+' '*padline+'\n' 
     out_f.write(out_line) 

例如,给定21列的更小的固定宽度,并使用一个“X”标记的空间

输入文件
ciao come va 
oggi meglio di domani 
ieri peggio di oggi 
my puzzle is big 
yours puzzle is small 

它产生的

ciao come vaXXXXXXXXX 
oggi meglio di domani 
ieri peggio di oggiXX 
my puzzle is bigXXXXX 
yours puzzle is small 
一个输出文件0
0

我建议使用tr实用程序将文件变成csv。它可以用逗号替换空格:

echo 'adam jane sam' > names.txt 
cat names.txt | tr -s ' ' ',' 
adam,jane,sam 

尾随空白将刚刚成为一无所有以下和R和熊猫将读取的NA/NaN的一个逗号。

0

$的awk '{printf的( “% - 93S \ n”,$ 0)}' file.txt的> FILE2.TXT

该做的工作,但不知道为什么。 AWK和SED像往常一样提供黑魔法。