从文本文件中浮动的python列表

时间:2015-04-12 16:52:49

标签: python python-2.7

我正在尝试使用以下代码从文本文件创建浮动列表:

exam_data_file = open('exam_data.txt','r')
exam_data = exam_data_file.readlines()
exam_data1 = []

for line1 in exam_data_file:
    line1 = float(line1)
    exam_data1.append(line1)

 print(exam_data1)     

但输出只是:[]

有人可以帮忙吗?!

现在我收到此错误消息,无论我做出哪些更改:

line1 = float(line1)


ValueError: invalid literal for float(): 3.141592654
2.718281828
1.414213562
0.707106781
0.017453293

6 个答案:

答案 0 :(得分:1)

for line1 in exam_data_file:

应该是这样的:

for line1 in exam_data :

你指的是一个错误的对象

答案 1 :(得分:1)

为什么不使用 literal_eval n-(更易于使用)

您只需使用 literal_eval

即可阅读和打印简单列表或多维列表
from ast import literal_eval

f=open("demofile.txt",'r')

for line in f:
    new_list = literal_eval(line)

print(new_list)
f.close()

答案 2 :(得分:1)

https://stackoverflow.com/a/59717679/10151945 这个答案是不相关的。 这是我做过的一个例子:

from ast import literal_eval
file=open("student_list.txt",'r')
for student in file:
    student_list_final = literal_eval(student)
print(student_list_final)
file.close()

答案 3 :(得分:0)

您的代码实际上存在两个问题:

  • 第一个问题是您实际上正在阅读该文件两次。执行for循环时,一个时间线2(exam_data_file.readlines())和一个第二时间线5。您无法两次读取文件。详情请见see this post

  • 第二个问题是line1当前是您文件中的整行(在您的情况下是一系列单独的浮点数),而不是您预期的单个浮点数。这就是你得到Invalid literal错误的原因。您必须将其拆分为单独的数字才能在其上调用float。这就是你必须调用字符串的split方法的原因。

请改为尝试:

exam_data_file = open('exam_data.txt','r')
exam_data1 = []

for line in exam_data_file:
    exam_data1.extend([float(i) for i in line.split()])

print(exam_data1) 

输出:

[3.141592654, 2.718281828, 1.414213562, 0.707106781, 0.017453293]

答案 4 :(得分:0)

选择错误以在for循环中进行迭代时,您出错了。

for line1 in exam_data: # not the file!
    line1 = float(line1)
    exam_data1.append(line1)

这可以通过

进一步改进
exam_data = []
with open('exam_data.txt','r') as open_file:
    for line1 in open_file:
        line1 = float(line1)
        exam_data.append(line1)

print(exam_data)

上下文处理程序(带语法)将确保在处理完文件后关闭该文件!

答案 5 :(得分:0)

由于类似文件的对象是可迭代的,因此您只需使用map

with open('exam_data.txt','r') as f:
    exam_data = map(float, f)