我有一个输入文件:
3
PPP
TTT
QPQ
TQT
QTT
PQP
QQQ
TXT
PRP
我想阅读此文件并将这些案例分组到正确的boards
。
要阅读Count
(电路板编号),我有代码:
board = []
count =''
def readcount():
fp = open("input.txt")
for i, line in enumerate(fp):
if i == 0:
count = int(line)
break
fp.close()
但我不知道如何将这些块解析为List:
TQT
QTT
PQP
我尝试使用
def readboard():
fp = open('input.txt')
for c in (1, count): # To Run loop to total no. of boards available
for k in (c+1, c+3): #To group the boards into board[]
board[c].append(fp.readlines)
但它错误的方式。我知道List的基础知识,但在这里我无法解析文件。
这些电路板位于第2至4行,第6至第8行,依此类推。如何让他们进入Lists
?
我想将这些解析为Count
和Boards
,以便我可以进一步处理它们?
请建议
答案 0 :(得分:1)
我不知道我是否理解你想要的结果。我想你想要一份清单。 假设你想要董事会: [[数据,数据,数据],[数据,数据,数据],[数据,数据,数据]],然后您需要定义如何解析输入文件...具体来说:
如果是这种情况,则应正确解析文件:
board = []
count = 0
currentBoard = 0
fp = open('input.txt')
for i,line in enumerate(fp.readlines()):
if i == 0:
count = int(i)
board.append([])
else:
if len(line[:-1]) == 0:
currentBoard += 1
board.append([])
else: #this has board data
board[currentBoard].append(line[:-1])
fp.close()
import pprint
pprint.pprint(board)
如果我的假设是错误的,那么可以对其进行修改以适应。 就个人而言,我会使用字典(或有序的字典)并从len(板)获取计数:
from collections import OrderedDict
currentBoard = 0
board = {}
board[currentBoard] = []
fp = open('input.txt')
lines = fp.readlines()
fp.close()
for line in lines[1:]:
if len(line[:-1]) == 0:
currentBoard += 1
board[currentBoard] = []
else:
board[currentBoard].append(line[:-1])
count = len(board)
print(count)
import pprint
pprint.pprint(board)
答案 1 :(得分:0)
如果您只想获取特定的行号并将它们放入列表中:
line_nums = [3, 4, 5, 1]
fp = open('input.txt')
[line if i in line_nums for i, line in enumerate(fp)]
fp.close()