Я установки моего кода, как описано в this answer (как показано ниже):Python: Использование itertools, чтобы получить предыдущий, текущий и следующий элемент списка из текстового файла
from itertools import tee, islice, chain, izip
def previous_and_next(some_iterable):
prevs, items, nexts = tee(some_iterable, 3)
prevs = chain([None], prevs)
nexts = chain(islice(nexts, 1, None), [None])
return izip(prevs, items, nexts)
x = open('out2.txt','r')
lines = x.readlines()
for previous, item, next in previous_and_next(lines):
print "Current: ", item , "Next: ", next, "Previous: ", previous
if item == '0':
print "root"
elif item == '2':
print "doc"
else:
print "none"
x.close()
out2.txt
выглядит следующим образом:
0
2
4
6
8
10
Этот код отлично работает при использовании чего-то вроде list = [0,2,4,6,8,10]
, но не при использовании строк текстового файла в списке. Как я могу использовать строки текстового файла в виде списка. Разве это не x.readlines()
? В конечном итоге мне нужно иметь возможность печатать выходные данные в зависимости от результатов item, next, and previous
.
Текущий результат:
Current: 0
Next: 2
Previous: None
none
Current: 2
Next: 4
Previous: 0
none
Current: 4
Next: 6
Previous: 2
none
Current: 6
Next: 8
Previous: 4
none
Current: 8
Next: 10 Previous: 6
none
Current: 10 Next: None Previous: 8
none
Желаемый результат должен быть:
Current: 0
Next: 2
Previous: None
**root**
Current: 2
Next: 4
Previous: 0
**doc**
none
Current: 4
Next: 6
Previous: 2
none
Current: 6
Next: 8
Previous: 4
none
Current: 8
Next: 10 Previous: 6
none
Current: 10 Next: None Previous: 8
none
Каким образом делает код не работает? «Это не работает нормально» - это бесполезная информация. –
Добавлено то, что выглядит в настоящее время на выходе, и то, что я пытаюсь сделать так. – serk
Обратите внимание, что вместо последовательности 'if's, вы можете использовать словарь для сопоставления строк (типов узлов?) Для других строк (имена узлов?). Это даже проще, если вы используете [по умолчанию словарь] (http://code.activestate.com/recipes/389639-default-dictionary/), который не является родным типом в Python, но легко реализуется. – outis