Skip to main content
 首页 » 编程设计

python之将.dat文件中的数据读取到python中的不同变量中

2025年05月04日27shanyou

我有一个 file.dat,如下所示:

0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 
1.02072021799999990144 0.58931309249999996869 0.01464322176999999919 
1.04801084399999999697 0.60506934300000003724 0.02121744689000000170 
1.11938267900000010258 0.64627589110000005501 0.03132390833999999791 
1.23483727700000001093 0.71293363409999999103 0.03462252470999999804 
1.36316318200000008432 0.78702263009999995358 0.02774525518999999829 
1.44821317199999999303 0.83612626459999994655 0.01540671738000000054 

我想创建 3 个变量 x, y, z 这样 x 将是第一列的数组, y 是第二列和 z 与第三列。我尝试了以下内容:

with open('filename') as f: 
     file = f.read() 
 
     x = [row.split(' ')[0] for row in data] 
     y = [row.split(' ')[1] for row in data] 
     z = [row.split(' ')[2] for row in data] 

但是,这不起作用并且会报错。有没有简单易行的方法来执行此操作?

请您参考如下方法:

首先,作为一种更 pythonic 的方式,您可以使用 numpy.genfromtxt 将文本作为数组读取,然后通过转置数组来获取列:

import numpy as np 
 
with open('text.dat') as f: 
    array = np.genfromtxt(f) 
    x,y,z = array.T 

关于你的代码,不清楚什么是 data,无论如何,如果你想遍历文件的行,你需要简单地遍历文件对象:

x = [] 
y = [] 
z = [] 
with open('filename') as f: 
    for line in f: 
     i,j,k = line.split() 
        x .append(i) 
        y .append(j) 
        z .append(k) 

或者作为一种更优雅的方式使用 zip() 函数来获取列:

with open('text.dat') as f: 
     x, y, z = zip(*[line.split() for line in f])