如何始终将文件的每一行放入列表中,同时将生成的列表包装到列表中?

2024-04-25 18:13: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(),但它没有按我所希望的那样工作。
任何帮助都将不胜感激。你知道吗


Tags: 文件thein列表forlendefline
1条回答
网友
1楼 · 发布于 2024-04-25 18:13:07

main函数中的try/except部分替换为:

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。有一个“bare”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))

相关问题 更多 >