如何将文件转换为lis

2024-06-26 14:47:07 发布

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

我目前正试图使一个文本文件与数字进入一个列表 文本文件是

1.89
1.99
2.14 
2.51  
5.03  
3.81  
1.97 
2.31  
2.91  
3.97 
2.68 
2.44

现在我只知道怎么读文件。我怎样才能把这个列成一个清单? 之后如何将列表分配给另一个列表? 例如

jan = 1.89
feb = 1.99 

等等

注释代码:

inFile = open('program9.txt', 'r') 
lineRead = inFile.readline() 
while lineRead != '': 
    words = lineRead.split() 
    annualRainfall = float(words[0]) 
    print(format(annualRainfall, '.2f')) 
    lineRead = inFile.readline() 
inFile.close()

Tags: 文件代码列表readline数字openinfilejan
2条回答
months = ('jan', 'feb', ...)

with open('filename', 'rb') as f:
  my_list = [float(x) for x in f]

res = dict(zip(months, my_list))

但是,这将只适用于有相同的行数比个月!你知道吗

一个文件已经是一个行的iterable了,所以你不必做任何事情就可以把它变成一个行的iterable。你知道吗

如果您想将它特别地放入一个行列表,您可以对任何其他iterable执行相同的操作:对它调用^{}

with open(filename) as f:
    lines = list(f)

但是,如果您想将其转换为一个浮动列表,那么开始使用哪种类型的iterable并不重要,因此您最好按原样使用该文件:

with open(filename) as f:
    floats = [float(line) for line in f]

(请注意,^{}会忽略尾随空格,因此您使用的方法是去掉换行符还是保留换行符并不重要。)


从评论中:

now i just need to find out how to assign the list to another list like jan = 1.89, feb = 1.99 and so on

如果您知道您正好有12个值(如果您没有,这将是一个错误),您可以编写以下哪一个看起来更好:

jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec = (float(line) for line in f)
jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec = map(float, f)

然而,像这样有12个独立的变量通常是个坏主意。如果不知道您打算如何使用它们,很难确定(请参见Keep data out of your variable names了解自己做出决定的相关背景),但是最好有一本字典,使用月份名称作为关键字:

floats = dict(zip('jan feb mar apr may jun jul aug sep oct nov dec'.split(),
                  map(float, f))

或者将值留在列表中,并将月份名称用作该列表中索引的符号名称:

>>> jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec = range(12)
>>> print(floats[mar])
2.14

使用^{}^{}可能更好。同样,这实际上取决于导入数据后计划如何使用它们。你知道吗

相关问题 更多 >