Python 从dat文件中读取特定列

Python 从dat文件中读取特定列,python,Python,我有一个.dat文件,我想用python读取它,我需要从.dat文件中提取一列,其中包含度量值。当我继续读文件的时候 a = open ('example.dat') b = a.read() print(b) a.close 文件读得很好,它显示,她的形状是1,所以我在文件中只有一行。我现在如何提取一个,就像在记事本中一样,包含我需要的值的列,并将其保存到一个新数组中?我为这个可能愚蠢的问题感到抱歉 使用python读取文件时,该文件如下所示: YYYY MM DD HH MM SS sta

我有一个.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

是否要从仅包含一行的文件中提取一列?或者您只想从文件中提取一列,并在其中添加几行,例如第5行的第二列

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

试试这个:

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

当然,您可以将这些值保存到某些目录列表中。

只要假设您有一个名为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)

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


b=a.read()
c=b.split(“”)和
print(c)
之后,请随意提问。它将创建由空格分隔的元素数组。概率输出可能对您没有帮助:(问题是,并非总是有1个空格作为分隔符。有时是5个或更多。这有关系吗?多个空格是连续的分隔符,或者其中的某个值为空?似乎有多个空格作为分隔符。对于多个空格,在split()方法中不使用任何内容。例如,line.split()而不是line.split(“”)谢谢!我使用Spyder作为GUI。当读取文件时,它告诉我大小为1。当使用记事本打开文件时,它看起来像是以18200行/行和大约40列的形式构造的。我想读取例如第10列,因为这一列包含我要在新数组中提取的值。我尝试了您的建议并它工作,它打印文件的第X行。但是我需要第X列(问题是我不知道列的编号,因为文件只读取了一行)。非常感谢!您能提供文件片段至少8-10行的副本吗?虚拟数据也可以。只想知道文件的详细结构。请先尝试从文件中逐行打印输出。然后拆分每行并访问冒号的索引。尝试使用“for line in f.read()。拆分('\n'):”打印内容,如果输出仍然是一行,或者您或能够在两行之间进行分隔,则会出现错误:SyntaxError:无效语法:(对不起,我刚刚修复了它!所以我需要将我的文件定义为estatico?对不起,这真的失控了,我的坏。哈哈,没问题。谢谢。问题是,对于您的代码,我只得到文件的最后一行作为列表。但我需要列出station3下列中的值,例如:(
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)