Python将文件拆分为列表

Python将文件拆分为列表,python,list,Python,List,下面的函数有问题。它似乎很好地分割了文件,但只将其作为一个元素返回 功能: def splitRoute(): route = [] for line in open("route.txt","r").readlines(): line = line.replace("\r","") line = line.replace("\n","") line = string.split(line, '>') route.append(line) re

下面的函数有问题。它似乎很好地分割了文件,但只将其作为一个元素返回

功能:

def splitRoute():
  route = []
  for line in open("route.txt","r").readlines():
    line = line.replace("\r","")
    line = line.replace("\n","")
    line = string.split(line, '>')
    route.append(line) 
  return route
输出:

[['B', 'F']]
route.txt内容:

B>F
它是否因为文件中只有一行而只返回一个元素?
我有另一个函数,它可以将另一个文件拆分成一个7x7的列表,运行良好,但由于它有7行,所以只能覆盖所有7个元素吗

为什么要替换换行符?只需拆分字符串:

def splitRoute():
  route = []

  for line in open('route.txt', 'r'):
    route.append(line.strip().split('>')) 

  return route

split
创建一个列表。然后将该列表附加到另一个(空)列表中。因此,结果是在一个列表中得到一个列表。如果你有更多的行,你会得到更长的列表。下面是代码的快速分解:

def splitRoute():
  route = []
您创建了一个空列表

  for line in open("route.txt","r").readlines():
    line = line.replace("\r","")
    line = line.replace("\n","")
对于每一行,您都将\r和\n字符替换为空字符串。请注意,使用
line.strip()
'apple\n\r'.strip()
->
'apple'
)可以更轻松地执行此操作。此外,还应将文件保存为文件名,以便以后可以关闭。最后,这里不需要使用
readlines
,只需直接迭代文件即可

    line = string.split(line, '>')
现在,将
line
引用的字符串拆分为一个列表,并将该列表分配给
line
。现在,
看起来像这样:
['B','F']

    route.append(line) 
    return route
现在您将
附加到
路线
,而
路线
看起来是这样的:
[[B',F']

如果您的目标是创建单个列表,请使用
extend
而不是
append

def splitRoute():
  route = []
  f = open('route.txt', 'r')
  for line in f:
    route.extend(line.strip().split('>'))
  f.close()
  return route
或者,与一起使用
,并采用更可读的缩进级别:

def splitRoute():
    route = []
    with open('route.txt', 'r') as f:
        for line in f:
            route.extend(line.strip().split('>'))
    return route
具有两行的文件的输出(
'B>F\nF>X\n'
):


@Schmooo,它还会在每次使用
+
时创建列表的新副本。我建议使用
extend
而不是
append
;然后你就不必使用
sum
了。我刚刚意识到如果route.txt是多行的,这是行不通的。它获取文件中的所有行,并将其添加到列表中的一行。我需要它将其拆分为一个二维列表,以便为三行文件提供2x3。我是否需要列表中的列表使其成为一个二维数组,或者是否有一种方法可以仅使用一个列表来实现这一点?如果您需要二维数组,请使用
append
而不是
extend
。在Python中创建2D数组最直接的方法实际上是创建列表列表。您还可以使用元组索引dict<代码>d={};d[0,0]=1;d[0,1]=0;d[1,0]=1;d[1,1]=0,依此类推。但在大多数情况下,这比列表慢一些。那么,你还期待什么呢?
>>> splitRoute()
['B', 'F', 'F', 'X']