python - 需要将字符串读入 float 组

标签 python

我有一个如下所示的文本文件。我想将给定值作为 float 列表读取。之后我要做一些计算。我使用拆分函数和转换为 float 。但我无法转换第一个和最后一个,因为这两个有方括号。 ([ ])。它给出了如下错误。

文件格式

[-1.504, 1.521, 1.531, 1.1579, -2.2976, 2.5927,... 1000 records]
[2.758, -0.951, -1.7952, 0.4255, 2.5403, 1.0233,... 1000 records]
[0.682, -2.205, 2.1981, 2.1329, 0.1574, -0.4695,... 1000 records]

错误

 Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
 ValueError: could not convert string to float: [0.682

我使用的代码

F = open('XYZ.txt', 'r')
>>> for line in F:
...     P = line.split(',')
...     P

任何人都可以告诉我如何将这些值读入如下所示的 float 组中。

X = [-1.504, 1.521, 1.531, 1.1579, -2.2976, 2.5927,... 1000 records]
Y = [2.758, -0.951, -1.7952, 0.4255, 2.5403, 1.0233,... 1000 records]
Z = [0.682, -2.205, 2.1981, 2.1329, 0.1574, -0.4695,... 1000 records]

然后我可以调用像 X[1]、X[999] 这样的值

最佳答案

使用ast.literal_eval()将每一行解析为一个 float 列表:

import ast

with open('XYZ.txt', 'r') as infh:
    for line in infh:
        row = ast.literal_eval(line)
        print row

ast.literal_eval() 将每一行解释为包含文字 Python 值,支持列表、元组、字典、字符串和数字文字。

演示:

>>> import ast
>>> ast.literal_eval('[-1.504, 1.521, 1.531, 1.1579, -2.2976, 2.5927]\n')
[-1.504, 1.521, 1.531, 1.1579, -2.2976, 2.5927]

关于python - 需要将字符串读入 float 组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21222702/

相关文章:

python - 反转字符串的前半部分和后半部分并将它们一起返回

Python,处理目录中的文件安全吗?

python - 如何 pickle 字典对象?

python - 如何在 Python 中进行 "IF"分析后对数据框进行排序

Python 套接字编程和 LED 接口(interface)

python - Django 从分组列表中过滤

python - pynotify 不适用于守护进程

Python:将一个列表中的值匹配到另一个列表中的值序列

python - 如何在python中使用迭代器

python和静态方法