【问题标题】:Appending Lines from a File into a List将文件中的行附加到列表中
【发布时间】:2018-05-11 10:08:55
【问题描述】:

我正在尝试编写一个读取文件并将文件的行附加到列表中的函数。例如一个文件如下:

hello
goodbye 

应该返回列表:

[["h","e","l","l","o"]
 ["g","o","o","d","b","y","e"]]

我创建了一个辅助函数 splitLine,它接受一个字符串作为输入,并返回字符串中的字母列表。例如"abc" 会变成["a","b","c"]

我在插入新行和从列表中删除“\r”和“\n”时遇到问题。这是我的代码:

def createGrid(filename):
    myFile = open(str(filename),"r")
    myGrid = []
    for line in myFile:
        myLine = splitLine(line)
        myGrid.append(myLine)
    return myGrid

【问题讨论】:

  • 在您发布的示例中,hello goodbye 应该是两行,还是只有一行包含多个单词?

标签: python file grid append


【解决方案1】:

你或许可以尝试像这样遍历多个 for 循环

def createGrid(filename):
    myFile = open(str(filename),"r")
    myGrid = []
    for line in myFile:
        for apl in line:
            myLine = apl.splitlines()
            myGrid.append(myLine)
    return myGrid

【讨论】:

    【解决方案2】:

    您想做的很多事情都由 Python 中的内置方法处理。

    list() 包裹在字符串周围会将其拆分为字符列表;在字符串上使用.strip() 方法将删除前导和尾随空格(例如'\r\n');并且您可以使用for 循环遍历您打开的文件的每一行。

    def create_grid(filename):
        with open(filename, 'r') as fp:
            return [list(row.strip()) for row in fp]
    

    【讨论】:

      【解决方案3】:

      这是另一个解决方案:

      def createGrid(filename):
          myFile = open(str(filename),"r")
          myGrid = []
          for line in myFile:
              myGrid.append(list(line.strip()))
          return myGrid
      
      print createGrid("input.txt")
      

      输出:

      [['h', 'e', 'l', 'l', 'o'], ['g', 'o', 'o', 'd', 'b', 'y', 'e']]
      

      【讨论】:

        猜你喜欢
        • 2014-05-13
        • 2012-01-04
        • 2021-03-27
        • 1970-01-01
        • 2016-08-09
        • 1970-01-01
        • 1970-01-01
        • 2013-07-15
        • 1970-01-01
        相关资源
        最近更新 更多