2016-06-23 2 views
0

Привет У меня есть CSV-файл, как этотУдалить предварительно heades из CSV перед использованием DictReader - Python

here is some text 
some more text 
summary 
id score 
1 33 
2 22 
3 11 
detail 
id try score 
1 1 22 
1 2 11 
2 1 10 
2 2 12 
3 1 11 

Я хочу, чтобы разобрать идентификатор данных, попробуйте, оценка, которая приходит после того, как деталь к DictReader Как я могу сделать это ?

+0

Это не правильный файл csv. –

+0

Это пример файла. Вот как выглядит мой файл. Мне нужно удалить все строки до «id try score» для дальнейших шагов. Как я могу это сделать? – user2728024

+0

Можете ли вы разобрать любую строку, начинающуюся с числового, и обрабатывать только эти строки? –

ответ

0

Вы можете посмотреть на это:

import csv 

with open('file.txt', 'r') as f: 
    text = f.read() 

relevant_lines = text.split('detail \n')[1].splitlines() 

d_reader = csv.DictReader(relevant_lines, delimiter= ' ', skipinitialspace=True) 

print(d_reader.fieldnames) 

for row in d_reader: 
    print(row) 

Этот выход:

['id', 'try', 'score'] 
{'score': '22', 'try': '1', 'id': '1'} 
{'score': '11', 'try': '2', 'id': '1'} 
{'score': '10', 'try': '1', 'id': '2'} 
{'score': '12', 'try': '2', 'id': '2'} 
{'score': '11', 'try': '1', 'id': '3'} 

Я в основном отфильтровываются все до строки, содержащей «деталь» (эта линия включена), а затем разобран это как файл csv.

Я использовал skipinitialspace=True, чтобы убедиться, что последовательные пробелы интерпретируются только как один разделитель.

Смежные вопросы