#python #pandas
#питон #панды
Вопрос:
Функция pandas read_table()
позволяет нам считывать *.tab
файл, а параметр skiprow
предоставляет гибкие способы извлечения данных. Однако у меня возникают проблемы, когда мне нужно прочитать *.tab
файл в цикле, но количество строк, которые нужно пропустить, является случайным. Например, содержимое , которое необходимо пропустить, начинается /*
и заканчивается */
, например:
/* ... The number of rows need to skip is random ... */
Итак, как мне найти строку */
и затем использовать параметр skiprow
?
Комментарии:
1. Ошибочно называть их «случайными», потому что это не так, у них просто есть синтаксис, который в настоящее время не обрабатывается анализатором pandas. «Пропустить переменное количество строк комментариев в стиле C» было бы более точным. В любом случае, всякий раз, когда анализатор pandas не может с чем-то справиться, что часто случается, вы закатываете рукава и кодируете базовое исправление Python.
2. Когда вы говорите
For example, the contents need to skip start with /* and end with */
, это всего лишь один пример (из многих), и вы хотите написать обобщенный анализатор заголовков на основе регулярных выражений? Или вы хотите анализировать комментарии только в стиле C? В любом случае, мы можем сделать и то, и другое. Кстати, это только подмножество комментариев в стиле C, потому*/
что закрытие может происходить в любом месте строки, а не только в отдельной строке в качестве единственных символов.
Ответ №1:
Потребляйте строки до тех пор, пока текущая строка не начнется с '*/'
:
with open('data.txt') as fp: for row in fp: if row.startswith('*/'): df = pd.read_table(fp)
Комментарии:
1. Полезным дополнением было бы напечатать «ИНФОРМАЦИЯ: Пропущенные {n} строки заголовка комментария в стиле C» .
2. Извините, но я не понимаю, что вы имеете в виду, нужно ли мне добавлять команду в строку с открытым (‘data.txt’) как fp: ? Пожалуйста, будьте осторожнее, спасибо.
3. Юнву, я предлагаю @Corralien добавить код, который подсчитывает строки заголовка, а затем напечатать «ИНФОРМАЦИЯ: Пропущено {n} строк заголовка комментария в стиле C» . Это не сложно.