从dat-file

时间:2015-10-26 10:34:05

标签: python

我有一个.dat文件,我想用python读取,我需要从.dat文件中提取一个带有测量值的列。当我用

读取文件时
a = open ('example.dat')
b = a.read()
print(b)
a.close

文件读得很好并显示,她的形状是1,所以我在文件中只有一行。我现在如何在记事本中提取一个具有我需要的值的列并将其保存到新数组?我很抱歉这个愚蠢的问题。

使用python:

读取时,文件看起来像这样
YYYY MM DD HH MM SS station_no1 station_no2 ... 4.654 4.324 5.123 ...

它包含有关测量时间,站号,温度值等的信息

编辑:文件在记事本中如下所示。在python中,它被读作1行:

YYYY MM DD HH MM SS JulianDay     station1     station2     station3
lat                               46.93842     46.28712     46.82137
lon                               93.94716     93.14256     93.64739
2015 10 01 00 35 30 273.74623     3.4345       3.5686       4.2132
2015 10 01 00 37 00 273.75623     2.5431       3.2143       2.6654

我找到了解决方案:

f = open('file.dat','r')
data = f.read()
a = data.split('\n',1)[0]
print a

3 个答案:

答案 0 :(得分:2)

您想从文件中只提取一个只包含一行的列吗?或者你想从你的文件中只提取一行,例如第5行的第二列?

根据您的解释,我假设您的文件中的字段被“空格”分隔。

for line in open("inputfile.txt"):
    columns = line.split(separator) #place counter for line,seperator as space [" "]
        print columns[0] #REPLACE 0 WITH INDEX OF COLUMN YOU WANT TO EXTRACT

答案 1 :(得分:0)

试试这个:

infile = open('input.txt')
for line in infile:
    list = line.split()
    if len(list) >= 10:
        print(list[9])

当然,您可以将此值保存到某个列表中。

答案 2 :(得分:0)

假设您有一个名为 alpha.txt 的 .txt 文件,其中有四列 0、1、2、3,并且您想读取第二列和第三列,那么您可以使用以下代码。

import math
import numpy as np
import matplotlib.pyplot as plt

 
#for some specific columns
a,b = np.loadtxt('alpha.txt', unpack=True, usecols = [1,2])
print(a,b)

这里 a,b 是用于读取第 2,3 列的任意变量。我们必须选择与要读取的列数一样多的任意变量...

如果你想阅读所有四列,那么有两种方法可以做到。

import math
import numpy as np
import matplotlib.pyplot as plt

 
#for some specific columns
a,b,c,d = np.loadtxt('alpha.txt', unpack=True, usecols = [0,1,2,3])
print(a,b,c,d)

import math
import numpy as np
import matplotlib.pyplot as plt

 
#for some specific columns
a,b,c,d = np.loadtxt('alpha.txt', unpack=True)
print(a,b,c,d)

同样适用于任何 .dat 文件。

请随时提出任何问题...