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(),但它不能像我想要的那样工作。
任何帮助将不胜感激。
答案 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))