如何使用python将具有各种列的TXT文件转换为带有分隔符“,”的文件?

时间:2017-11-17 11:14:17

标签: python delimiter libreoffice genfromtxt

我有以下 ORIGINAL .TXT文件:

"TRACE: A"
"FORMAT: WOW"

"Frequency" "Data 1"    "Data 2"
1   1   2
1   6   0

"Frequency" "Data 1"    "Data 2"
1   5   0
1   6   0

为了运行python脚本,我必须首先在LibreOffice中打开.TXT文件,然后保存并关闭它,以创建带有delimiter =','的 EXPECTED .TXT文件,如图所示下面:

"TRACE: A",,
"FORMAT: WOW",,
,,
"Frequency","Data 1","Data 2"
1,5,0
1,5,0

"Frequency","Data 1","Data Trace Imag"
1,5,0
1,5,0

现在我可以使用以下代码绘制图表:

import numpy as np
from pylab import *

fileName = 'EXPECTED.TXT';

traceAdata= np.genfromtxt(fileName, delimiter=',')[3:5].T;

x = traceAdata[0]*1e-6;
A = traceAdata[1];

plot(x,A);
savefig(fileName + '.png');

我试图在原始TXT文件中使用不同的分隔符,例如:'',None,'\ t',但它们都没有工作,我有以下错误:

Line #5 (got 3 columns instead of 1)

有没有其他方法可以使用python将原始TXT文件转换为需要分隔符的文件?

UPD:当前解决方案,谢谢@lxop。

import numpy as np
from pylab import *

fileName = 'C2.TXT';

traceAdata= np.genfromtxt(fileName, skip_header=21,skip_footer = 334).T;

x = traceAdata[0]*1e-6;
A = traceAdata[1];

plot(x,A);
savefig('traceAdata.png');

traceBdata= np.genfromtxt(fileName, skip_header=337).T;
x = traceBdata[0]*1e-6;
B = traceBdata[1];

plot(x,B);
savefig('traceBdata.png');

1 个答案:

答案 0 :(得分:1)

您可以使用类似

的脚本直接加载空格分隔文件,而无需转换
import numpy as np
from pylab import *

fileName = '11.TXT';

traceAdata= np.genfromtxt(fileName, skip_header=4).T;

x = traceAdata[0]*1e-6;
A = traceAdata[1];

plot(x,A);
savefig(fileName + '.png');

特别是不使用skip_header来跳过没有数据的行。此外,如果您明确指定delimiter=' ',则genfromtxt会将每个空间视为分隔符,并尝试获取各个空格字符之间的值,因此请将该参数保留。< / p>

如果你真的想先将它转换为CSV,那么你应该看一个解析库,因为它需要处理引用等。