Если строки равно
['ID abcd', 'AC efg', 'RF hij']
затем
[line.split()[1] for line in lines]
Edit: Добавлено все ниже после того, как вниз голосов
Я не знаю, почему это было вниз проголосовали. Я думал, что код - это самый простой способ начать работу с информацией, предоставленной в то время. Возможно, это лучшее объяснение того, что я думал/думал, что данные были/есть?
если вход представляет собой список строк в повторяющейся последовательности, называемой alllines;
alllines = [ #a list of repeated lines of string based on initial characters
'ID abcd',
'AC efg',
'RF hij',
'ID klmno',
'AC p',
'RF q'
]
, то код есть;
[[line.split()[1] for line in lines] for lines in [[alllines.pop(0) \
for i in range(3)] for o in range(len(alllines)/3)]]
В основном это говорит, создать подсписок три раскола [1] строки из всего списка всех строк для каждых трех строк в всем списке.
и выход:
[[
'abcd', 'efg', 'hij'
], [
'klmno', 'p', 'q'
]]
Edit: 8-6-13 Это еще лучше без поп();
zip(*[iter([line.split()[1] for line in alllines])]*3)
с немного другим выходом
[(
'abcd', 'efg', 'hij'
), (
'klmno', 'p', 'q'
)]
Я думаю, нам нужно получить более подробную информацию. Каким образом он основан на первом символе в строке? Указывает ли «ИД» начало нового набора данных? Являются ли первые поля строки всегда в том же порядке, в каком они отображаются? – brianmearns
есть. ID указывает начало новых данных. всякий раз, когда приходит идентификатор, сбор данных должен начинаться до следующих ID-встреч. – sam
Так что же выход будет что-то вроде ID ABCD РФ Hij AC EFG или что вход не представляется возможным? – TylerLubeck