【问题标题】:how to read an array from file and assign it to variable? [duplicate]如何从文件中读取数组并将其分配给变量? [复制]
【发布时间】:2019-12-22 21:42:10
【问题描述】:

我正在尝试从我之前创建的文件中读取一个数组,然后将其分配给变量。 但现在我遇到了一个问题。当我将该文件内容分配给变量时,它变成了字符串而不是数组。 如何将其转换回数组?

file.txt 内容:

[(0, 0.2, ),(0, 0.1, ),(0.2, 0.2, ),(0.2, 0.2, ),(0.4, 0.2, ),]

我的代码:

valid_outputs = f=open("fileName.txt","r")
if(f.mode == 'r'):
    valid_outputs = f.read()

【问题讨论】:

  • 这不是一个数组,它是一个 Python listtuple 值。但是,不确定您是如何设法生成该确切字符串的,因为 Python 表示不包括尾随逗号。

标签: python python-3.x list file


【解决方案1】:

你可以在字符串上使用ast.literal_eval()

>>> ast.literal_eval('[(0, 0.2, ),(0, 0.1, ),(0.2, 0.2, ),(0.2, 0.2, ),(0.4, 0.2, ),]')
[(0, 0.2), (0, 0.1), (0.2, 0.2), (0.2, 0.2), (0.4, 0.2)]

【讨论】:

  • 我更新了指向 Python 3 的链接...主要是为了帮助搜索引擎找到正确的链接,但 OP 确实明确标记了 Python-3
  • @SamMason:很好,谢谢你这样做!
【解决方案2】:
x = None
with open("file.txt", "r") as f:
    x = eval(f.read())

print x

【讨论】:

  • 这个非常好用,谢谢!
【解决方案3】:

有点复杂,但没有任何包:

>>> [tuple([float(i) for i in block.split(",")[:2]]) for block in valid_outputs.replace(")]", "").replace("[(", "").split("),(")]
[(0.0, 0.2), (0.0, 0.1), (0.2, 0.2), (0.2, 0.2), (0.4, 0.2)]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-07
    • 1970-01-01
    • 2020-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2017-06-22
    相关资源
    最近更新 更多