当前位置: 首页 > 知识库问答 >
问题:

python从文件中读取数据

仲俊豪
2023-03-14

我有一个非常简单的问题:使用Python从txt文件中读取不同条目的最有效方法是什么?

假设我有一个文本文件,如下所示:

42017     360940084.621356  21.00  09/06/2015  13:08:04
42017     360941465.680841  29.00  09/06/2015  13:31:05
42017     360948446.517761  16.00  09/06/2015  15:27:26
42049     361133954.539315  31.00  11/06/2015  18:59:14
42062     361208584.222483  10.00  12/06/2015  15:43:04
42068     361256740.238150  19.00  13/06/2015  05:05:40

在C中,我会这样做:

while(fscanf(file_name, "%d %lf %f %d/%d/%d %d:%d:%d", &id, &t0, &score, &day, &month, &year, &hour, &minute, &second) != EOF){...some instruction...}

用Python做这样的事情最好的方法是什么?以便将每个值存储到不同的变量中(因为我必须在整个代码中使用这些变量)。

提前感谢!

共有3个答案

周祺
2023-03-14

根据你想对数据做什么,熊猫可能是值得研究的东西:

import pandas as pd

with open(file_name) as infile:
    df = pd.read_fwf(infile, header=None, parse_dates=[[3, 4]], 
        date_parser=lambda x: pd.to_datetime(x, format='%d/%m/%Y %H:%M:%S'))

双列表< code>[[3,4]]和< code>date_parser参数将第三和第四列(索引为0)作为单个数据时间对象读取。然后,您可以使用以下命令访问该列的各个部分

>>> df['3_4'].dt.hour
0    13
1    13
2    15
3    18
4    15
5     5
dtype: int64

(如果您不喜欢“3_4”键,请使用上面的< code>parse_dates参数,如下所示:

parse_dates={'timestamp': [3, 4]}

)

read_fwf用于读取固定宽度的列,您的数据似乎遵守这些列。或者,还有诸如read_csvread_table等函数。

(这个答案几乎是这个SO答案的重复,但是由于这里的这个问题更一般,所以我把它放在这里作为另一个答案,而不是评论。

袁良弼
2023-03-14

我会查找 string.split() 方法

例如,您可以使用

for line in file.readlines():
    data = dict(zip(("id", "t0", "score", "date", "time"), line.split(" ")))
    instructions()
许沛
2023-03-14

我感觉像泥鱼的回答不错,这里有另一种方式(可能轻一点)

import time
with open(file) as f:
    for line in f:
        identifier, t0, score, date, hour = line.split()

        # You can also get a time_struct from the time
        timer = time.strptime(date + hour, "%d/%m/%Y%H:%M:%S")
 类似资料:
  • 问题内容: 我正在从包含以下数据的CSV文件(xyz.CSV)中读取数据: 当我使用循环对其进行迭代时,我可以按以下代码逐行打印数据,并且仅打印column1数据。 通过上面的代码,我只能得到第一列。 如果我尝试打印line [1]或line [2],则会出现以下错误。 请建议打印列2或列3的数据。 问题答案: 这是我获得第二列和第三列的方法: 结果如下:

  • 问题内容: 我有点头疼,只是因为一个简单,易于表达的陈述使我的脸上有些错误。 我有一个名为的文件,如下所示: 我现在想读取文件。我发现了以下这些语句,但是不起作用: 控制台上显示的错误是这样的: 已编辑 从更改为 并得到了: 问题答案: 该方法( 中没有 )可以直接读取文件: 你正在使用方法,该方法仅用于字符串参数。 编辑:新消息是一个完全不同的问题。在这种情况下,该文件中存在一些无效的。为此,我

  • 问题内容: 我有一个包含多个词典的文件,如下所示: 或这个: 换句话说,每个词典中每个键的顺序都不相同。 我的问题: 最好的阅读本词典的方式是什么,以便无论顺序如何都可以调用Date,GenName和Segment?那可能吗? 请注意…这不是来自json文件。如果字典的构造不正确,我确定可以修改生成此输出的脚本。 问题答案: 正如您在评论中提到的,您要自己创建字典,因此以痛苦的格式存储字典并不是一

  • 问题内容: 我正在尝试使用该模块从python脚本读取json文件。经过一番谷歌搜索后,我发现以下代码: json文件的路径和名称在哪里。我收到以下错误: 问题答案: 该代码用作变量名。它将阴影您导入的模块引用。为变量使用其他名称。 除此之外,代码在接受字符串的同时传递文件对象。 传递文件内容: 或使用接受类似文件的对象。

  • 问题内容: 我刚刚在python上做了gzip的摘要。 而且我在屏幕上没有任何输出。作为python的初学者,我想知道如果要读取gzip文件中文件的内容该怎么办。谢谢。 问题答案: 尝试像这样通过gzip库压缩一些数据… …然后按照发布的代码运行… 这种方法对我有用,因为某些原因,gzip库无法读取某些文件。

  • 问题内容: 我有一个CSV文件,下面是其外观示例: 我知道如何读取文件并打印每列(例如- )。但是我真正想做的是读取行,就像这样,然后依此类推。 然后,我想将这些数字存储到变量中,以便稍后将它们总计(例如): 。那我可以做。 我将如何在Python 3中做到这一点? 问题答案: 您可以执行以下操作: 要么 : 编辑: