【问题标题】:Python Read file. Make a List per linePython 读取文件。每行创建一个列表
【发布时间】:2012-10-25 23:51:28
【问题描述】:

所以我想从一个文件中读取并将它的每一行放入一个列表中。

假设我有一个名为 MyFile.txt 或 MyFile.csv 的文件,其中包含以下三行数字/小数:

49.55,2,77.09,18,1,2.34,32.11
33,11.22,33.21,56,76.55
8,9,44.7,90.99,12.21,1.01

我希望程序打开文件然后读取第一行并将其放入列表中~比如 L1list。然后我希望它为第 2 行和第 3 行制作 L2list 和 L3list。 完成后,我希望能够计算出列表的总数、平均值、最大值和最小值等。我对使用 sum()、len()、max()、min() 等的这一部分非常有信心。

让我卡住的是列表的填充。我得到了错误的总数,长度等。 想也许它的句号或来者不拒。但我需要小数位,而思想清单需要分开来。

到目前为止我已经尝试过:

filename = 'MyFile.txt' 
fin=open(filename,'r')
L1list = fin.readline()
L2list = fin.readline()
L3list = fin.readline()

还有:

L1list.append(fin.readline())

随着:

L1list = [i.strip().split() for i in fin.readlines()]

有点不知道出了什么问题。

【问题讨论】:

    标签: python file list python-2.7


    【解决方案1】:

    那么您的代码出了什么问题? 你有没有尝试过这样的事情:

    L1list = [map(float, i.strip().split(',')) for i in fin.readlines()]
    

    或者用数据检查:

    with open(filename,'r') as fin:
        values = [map(float, [x for x in line.strip().split(',') if x]) for line in fin] 
    

    你也可以看看csv module

    【讨论】:

    • 感谢和抱歉 @Aniket- 从我的帖子中删除文本有点失望
    • 我在开 -ve 投票。我认为这是解决这个问题的最优雅的解决方案,您输入了 cmets 并要求您将其发布为答案。
    【解决方案2】:
    >>> '49.55,2,77.09,18,1,2.34,32.11'.split(',')
    ['49.55', '2', '77.09', '18', '1', '2.34', '32.11']
    

    请尝试print 看看发生了什么。

    对于更复杂的 CSV 文件,您可能希望使用 http://docs.python.org/2/library/csv.html

    【讨论】:

      【解决方案3】:

      我相信你需要类似的东西:

      L1list = map(float, fin.readline().strip().split(","))
      

      【讨论】:

        猜你喜欢
        • 2021-12-14
        • 1970-01-01
        • 1970-01-01
        • 2010-09-24
        • 2020-05-24
        • 1970-01-01
        • 2015-08-04
        • 1970-01-01
        • 2013-02-08
        相关资源
        最近更新 更多