【问题标题】:Create a List that contain each Line of a File创建一个包含文件每一行的列表
【发布时间】:2010-09-24 14:11:49
【问题描述】:

我正在尝试打开一个文件并创建一个列表,其中包含从文件中读取的每一行。

   i=0
   List=[""]
   for Line in inFile:
      List[i]=Line.split(",")
      i+=1
   print List

但是这个示例代码给了我一个错误,因为i+=1index is out of range。 我这里有什么问题?如何编写代码以在 InFile 中的每个新行中增加我的列表?

【问题讨论】:

    标签: python


    【解决方案1】:

    我不确定 Python,但大多数语言都有数组的推送/追加功能。

    【讨论】:

      【解决方案2】:

      比这容易得多:

      List = open("filename.txt").readlines()
      

      这将返回文件中每一行的列表。

      【讨论】:

      • WoooW 简直完美!有效。顺便说一句,想象那不是一个文件......但我想创建一个动态列表......我怎样才能在它上面附加一个元素?就像是一个arrayList?太棒了
      • 追加方法可以解决问题。例如:xs.append(line)
      • 关闭文件怎么样?
      • 不需要关闭它,当文件超出范围时python会自动处理。
      • 有没有办法从生成的列表中去掉“/n”?
      【解决方案3】:
      my_list = [line.split(',') for line in open("filename.txt")]
      

      【讨论】:

      • 我担心对于仍在尝试理解基本 python 的人来说,跳入列表理解可能有点大。 :)
      • Dustin 是对的,但 orip 提供了最正确的答案。
      • 我真的很喜欢这种方法。但是,在每个列表的末尾,\n 会打印在该行的最后一个值旁边。我怎样才能删除它?
      【解决方案4】:

      一个文件几乎是一个行列表。您可以在 for 循环中轻松使用它。

      myFile= open( "SomeFile.txt", "r" )
      for x in myFile:
          print x
      myFile.close()
      

      或者,如果您想要一个实际的行列表,只需从文件中创建一个列表。

      myFile= open( "SomeFile.txt", "r" )
      myLines = list( myFile )
      myFile.close()
      print len(myLines), myLines
      

      您不能通过someList[i] 项放在列表末尾。你必须做someList.append(i)

      另外,从不以大写字母开头的简单变量名。 List 让了解 Python 的人感到困惑。

      另外,从不使用内置名称作为变量。 list 是一种现有的数据类型,将其用作变量会使了解 Python 的人感到困惑。

      【讨论】:

      • 如何了解 Python 编码标准?谢谢,我不知道您使用小写的可变名称...有什么特殊原因吗?泰
      • 当您遵守约定时,PEP8 还对括号内的空格有话要说。 :)
      • @Dustin:非常了解 PEP8 中的括号内空格建议。在 ()'s 中经过 3 年的空格,我不会改变。
      • @Federico 阅读您的代码并停下来思考为什么某些部分看起来与其他代码不同的人。 :) 例如len() 调用有什么特别之处,使它与 PEP8 一致,但与上面的行不一致?如果您不在乎,请遵循约定。 :)
      【解决方案5】:

      f.readlines() 返回一个列表,其中包含每一行作为列表中的一个项目

      如果您希望每行都被拆分(“,”),您可以使用列表推导

      [ list.split(",") for line in file ]
      

      【讨论】:

        【解决方案6】:

        请阅读PEP8。你与 python 约定相差甚远。

        如果您想要以逗号分隔的每行列表的列表,我会这样做:

        l = []
        for line in in_file:
            l.append(line.split(','))
        

        每条记录都会有一个换行符。如果你不想这样:

        l = []
        for line in in_file:
            l.append(line.rstrip().split(','))
        

        【讨论】:

          【解决方案7】:

          我是这样做的

          lines_list = open('file.txt').read().splitlines()
          

          每一行都带有行尾字符(\n\r);这样字符就被删除了。

          【讨论】:

          • 谢谢,这删除了我从接受的答案中所期望的换行符:) +1 为你
          【解决方案8】:

          假设您还想在每行的开头和结尾去除空格,您可以将字符串 strip 函数映射到 readlines 返回的列表:

          map(str.strip, open('filename').readlines())
          

          【讨论】:

            猜你喜欢
            • 2015-08-23
            • 1970-01-01
            • 2020-08-13
            • 2018-12-03
            • 1970-01-01
            • 1970-01-01
            • 2015-08-04
            • 2012-10-25
            • 2023-03-27
            相关资源
            最近更新 更多