Я пытаюсь проанализировать файл с постоянным форматированием: заголовок и несколько строк текста, разделенных пробелами.
Я хочу начать новый словарный ключ, когда строка имеет одно значение, прочитать следующие строки в список списков, каждый из которых является разделенными словами.
Сначала я попытался использовать this , чтобы попытаться заставить программу идентифицировать новый маркер и использовать счетчик индекса для установки нового ключа.
Затем я сначала использовал this , чтобы разделить строки соответственно.
Вот как выглядит мой код:
import sys
def openfile(file):
frames = {}
index = 0
with open(file, 'r') as f:
for line in f:
if line.strip() == '5310':
index +=1
else:
newline = line
print newline
frames[index] = []
frames[index].append([newline.split()])
print frames
openfile(sys.argv[1])
Индекс будет правильно отсчитываться, и «print newline» печатает все нужные мне строки, но окончательно напечатанный словарь представляет собой вложенный список:
{1:[['last', 'line', 'of', 'input', 'file']]}
Вместо этого я хочу:
{1:[[line1],[line2] ...], 2:[[nextline], [nextline] ...], ... , key n : [[line], [line]....[lastline]]}
Я также пробовал:
def openfile(file):
frames = {}
index = 0
with open(file) as f:
for line in f:
if str(line.strip()) == '5310':
index += 1
else:
frames[index] = []
frames[index].append([line.split()])
return frames
Это также не будет работать.
Это оставляет меня с двумя вопросами:
1: почему мой текущий код печатает, но не добавляет строки, которые я хочу?
2. что еще я могу попытаться заставить это работать?
редактировать
Спасибо! Мне удалось заставить его работать.
Если у кого-то есть подобная проблема, вот мой код, который работает:
import sys
def openfile(file):
frames = {}
index = 0
with open(file, 'r') as f:
for line in f:
if line.strip() == '5310':
index +=1
frames[index] = []
else:
newline = line
print newline
frames[index].append([newline.split()])
print frames
openfile(sys.argv[1])