Как удалить заголовок неизвестной длины с помощью Python - PullRequest
0 голосов
/ 01 марта 2012

Python начинающий здесь. Я использую библиотеку matplotlib для создания графиков из текстовых файлов с разделителями табуляции. Я хочу, чтобы мой сценарий был гибким, чтобы он мог принимать различные типы файлов данных и превращать их в графики. Ключевая проблема, которую я имею, состоит в том, что разные текстовые файлы имеют разное количество строк заголовка до начала данных. Я хотел бы, чтобы Python мог определить, сколько строк содержит заголовок, а затем удалить их.

Я думаю, что это можно сделать двумя способами:

1) Подсчитайте наиболее часто встречающееся количество столбцов / элементов на строку в файле, так как большинство строк будут столбцами, содержащими интересующие данные. Затем с помощью цикла for удалите все строки, которые не содержат это количество столбцов.

2) Подсчитайте количество столбцов / элементов в последней строке файла, затем удалите все строки, не соответствующие этой длине. Так как во всех файлах, которые я использую, последняя строка также является данными, это тоже будет работать.

Если кто-нибудь может показать мне короткий способ сделать это на python, чтобы интегрировать его в мой скрипт, это действительно очень поможет.

Большое спасибо,

Rubal

1 Ответ

0 голосов
/ 01 марта 2012

1)

# lines = lines parsed out of file
line_store = {}
for line in lines:
    tokens = line.split('\t')
    if len(tokens) in line_store:
        line_store[len(tokens)].append(line)
    else:
        line_store[len(tokens)] = [line]
most = []
for line_group in line_store.values():
    if len(line_group) > len(most):
        most = line_group

most в конечном итоге будет список, который вы хотите

2)

# lines = lines parsed out of file
tokens_in_last_line = len(lines[-1].split('\t'))
lines_with_correct_number_of_tokens = []
for line in lines[:-2]:
    if len(line.split('\t')) == tokens_in_last_line
        lines_with_correct_number_of_tokens.append(line)
lines_with_correct_number_of_tokens.append(lines[-1])

`lines_with_correct_number_of_tokens 'будет иметь все ваши строки с тем же количеством токенов, что и последняя строка в файле.

Оба эти решения имеют серьезные недостатки. (1) захлебнется, если у вас есть заголовок с тем же числом токенов, что и у строк содержимого, или если строк заголовка больше, чем строк содержимого. (2) захлебнется, если у вас есть строка нижнего колонтитула, или если последняя строка пуста, или, опять же, если строки заголовка имеют то же количество токенов, что и строки содержимого. Я думаю, вы должны посмотреть, можете ли вы найти более элегантное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...