2015-02-24 4 views
0

У меня есть текстовый файл, который выглядит примерно так:Extract определенные строки из питона и формат вывода

Some text first 

First item A 

Second item A 

Third item A 


Some more text 


First item B 

Second item B 

Third item B 

More text 

Я хочу, чтобы извлечь определенные строки (пункт в данном примере) и сохранить их в виде CSV файл со следующим форматированием:

First item A | Second item A | Third item A 

First item B | Second item B | Third item B 

, где | означает отдельную колонку.

Вот моя попытка в Python: Я создаю список, открываю текстовый файл и перебираю его, а затем добавляю каждый элемент, который содержит правильные ключевые слова в мой список.

import sys 
sys.stdout = open('out.csv', 'w') 

f = open("input.txt").readlines() 

l = [] 

for line in f: 
    if("First" in line and not "Some text" in line): 
     l.append(line.rstrip()) 

    if("Second" in line): 
     l.append(line.rstrip()) 

    if("Third" in line): 
     l.append(line.rstrip()) 

print(l) 

В качестве следующего шага я думал, что я мог бы разделить список после каждого «третьего элемента», но я начинаю подозревать, есть более простой способ идти об этом.

ответ

0
with open("in.txt") as f: 
    out = [[]] 
    for line in f: 
     # if any line starts with "First","Second" or "Third" append it 
     if any(line.startswith(x) for x in ("First","Second","Third")): 
      out[-1].append(line.rstrip()) 
      # if it starts with Third add a new list for next section 
      if line.startswith("Third"): 
       out.append([]) 
for row in out: 
    print(" | ".join(row)) 

First item A | Second item A | Third item A 
First item B | Second item B | Third item B 
Смежные вопросы