[英]python list of floats from text file
我正在嘗試使用以下代碼從文本文件創建一個浮點數列表:
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
為什么不使用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()
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()
for line1 in exam_data_file:
應該是這樣的:
for line1 in exam_data :
你指的是錯誤的對象
您的代碼中實際上有兩個問題:
第一個問題是您實際上正在讀取文件兩次。 一個時間線 2 ( exam_data_file.readlines()
) 和第二個時間線 5,同時執行 for 循環。 您不能兩次讀取文件。 有關更多信息,請參閱此帖子。
第二個問題是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]
您在選擇要在 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)
上下文處理程序(帶語法)將確保在處理完文件后關閉文件!
由於類文件對象是可迭代的,因此您可以只使用map
。
with open('exam_data.txt','r') as f:
exam_data = map(float, f)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.