【问题标题】:How to read text file as list of floats? [duplicate]如何将文本文件读取为浮点列表? [复制]
【发布时间】:2021-11-16 05:40:20
【问题描述】:

这似乎是一个简单的问题,但在 Stack 社区中找不到。我在文本文件中有一个如下所示的数据集。我想将它作为一个列表读入,每个值都是一个浮点数。目前,所需的简单列表中的输出非常奇怪(也在下面)。

数据.txt:

[1130.1271455966723, 1363.3947962724474, 784.433380329118, 847.2140341725295, 803.0276763894814,..]

尝试的代码:

my_file = open(r"data.txt", "r")
content = my_file.read()
content_list = content.split(",")
my_file.close()

输出是奇数。值是列表中的字符串和列表以及添加的空格:

当前结果:

['[1130.1271455966723',
 ' 1363.3947962724474',
 ' 784.433380329118',
 ' 847.2140341725295',
 ' 803.0276763894814',
 ' 913.7751118925291',
 ' 1055.3775618432019',...]']

我也用下面的代码尝试了这里的方法 (How to convert string representation of list to a list?) 但产生了错误:

import ast
x = ast.literal_eval(result)
raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: ['[1130.1271455966723', '1363.3947962724474', ' 784.433380329118', ' 847.2140341725295', ' 803.0276763894814',...]']

理想结果:

list = [1130.1271455966723, 1363.3947962724474, 784.433380329118, 847.2140341725295, 803.0276763894814]

【问题讨论】:

  • 为什么一开始就这样存储?请注意,它碰巧 是有效的 JSON,因此您可以将其视为 JSON。但是您应该使用 JSON 或 pickle 之类的东西来序列化您的数据。不要只是将字符串表示形式转储到文件中。
  • 当文件中的项目用逗号和空格分隔时,您只是用逗号分隔。你也没有去掉括号。而且您不会将每个项目转换为浮点数。因此,您必须忽略括号,拆分正确的内容,并将每个项目转换为浮点数。网上有很多关于如何做这些事情的资源。然而,首先以这种方式存储它是不必要的。如果您将每个浮点数存储在文本文件中自己的行上,没有逗号或括号,那将大大简化事情。
  • 注意,一般而言对于some_object,如果您使用file.write(str(some_object)),则无法保证您实际上可以从您创建的文本

标签: python list file txt


【解决方案1】:

您的数据是有效的 JSON,因此只需使用将为您处理所有解析的相应模块:

import json

with open("data.txt") as f:
    data = json.load(f)

print(data)

输出:

[1130.1271455966723, 1363.3947962724474, 784.433380329118, 847.2140341725295, 803.0276763894814]

【讨论】:

  • 领先我 13 秒
猜你喜欢
  • 1970-01-01
  • 2017-11-20
  • 2011-04-05
  • 2016-07-06
  • 2016-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多