尝试在Python中将文件中的信息读入两个列表

2024-05-13 03:11:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我认为这是一个相对简单的问题,但我是一个初学者和有麻烦。我必须在python中将文本文件中的信息读入两个列表中。在

这是一个文本文件的示例,名为'额定值.txt“这三个哥伦布是电影收视率的平均值。在

1|452|3.9
2|131|3.2
3|90|3
4|209|3.6
...
...
1321|2|2.5
...
...
1685|0|-nan
1686|0|-nan

我需要把第二列和第三列数字读入两个独立的数组中。第二列数字需要读入列表编号。第三列需要读入一个列表avgRatings。文本文件从电影1到1686

所以numRatings必须是[452,131,90,....0,0] 并且avgRating必须是{}

我想我必须创建列表,然后创建循环来读取文本文件并将这些数字存储在数组中。在

这是我目前为止的代码

^{pr2}$

在上面的代码中,如果我打印a[0]a[1]和{},我分别得到1452,和{}。在

如何反复执行此操作并将结果存储到数组中?在


Tags: 代码txt信息示例列表电影数字数组
2条回答

像这样:

In [56]: with open("abc") as f:
    numRatings=[]
    avgRating=[]
    for line in f:
        f,s,t=map(float,line.split("|"))
        numRatings.append(s)
        avgRating.append(t)
   ....:         

In [57]: numRatings
Out[57]: [452.0, 131.0, 90.0, 209.0]

In [58]: avgRating
Out[58]: [3.9, 3.2, 3.0, 3.6]

或者:

^{pr2}$

您确实有一个CSV样式的文件,所以使用^{} module

import csv

results = []
with open('ratings.txt', 'rb') as f:
    reader = csv.reader(f, delimiter='|')
    for row in reader:
        results.append(row)

您可以根据需要对其进行扩展;将第二列和第三列附加到单独的列表中,将它们转换为ints和{}s,例如:

^{pr2}$

如果这个不是CSV样式的文件,您仍将使用循环;您将直接在file对象上循环:

with open('ratings.txt', 'rb') as f:
    for line in f:
        a = line.strip().split("|")

相关问题 更多 >