在将结果列表包装到列表中时,如何将文件的每一行放入列表中?

时间:2014-04-08 01:38:07

标签: python

def main():
    results = []
    while True:
        try:
            fileName = input("Enter the name of the data file: ")
            with open(fileName) as inputfile:
                for line in inputfile:
                    results.append(line.strip().split(','))
            break
        except:
            print ("No such file!\n")
    printGrid(results)

def printGrid(results):
    for i in range(len(results)):
        for j in range(len(results[i])):
            for x in range(len(results[i][j])):
                results[i][j][x].split(' ')
            print(results[i][j])

我有一个看起来像这样的文件:

II--------
I--II------ 
I----IIII-- 
I--------III
I------------
I--------II-
I--III---II 
I--II-I
IIIII

我希望能够读取此文件并将整个文件放在列表中,然后将原始列表中的每一行放入列表中。我还想打印出每个角色之间留有空格的“网格” 然而,似乎我错过了一些明显的东西。我无法让它发挥作用。我已经能够将文件放入列表中,但是我无法将每行放入列表中,而且我也无法在每个字符之间添加空格。

显而易见,我是Python的初学者。我非常感谢任何帮助。我已经尝试过split(),但它不能像我想要的那样工作。
任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

try/except功能中的main部分替换为:

try:
    fileName = input("Enter the name of the data file: ")
    with open(filename) as inputfile:
       result = [ [c for c in line] for line in inputfile.readlines() ]
    break
except IOError:
    print ("No such file!\n")

(请注意,这明确地捕获了IOError。有一个“裸”except子句是不好的做法,因为它会捕获并误报任何其他错误。)

这使用嵌套列表推导来生成列表列表。列表推导是创建列表并为其附加值的简写。它相当于:

result = []
for line in inputfile.readlines():
    row = []
    for char in line:
        row.append(char)
    result.append(row)

printGrid可以替换为:

def printGrid(results):
    for row in results:
        print(' '.join(row))