python: импортировать текстовый файл без разделителей - PullRequest
0 голосов
/ 06 декабря 2018

Я хочу импортировать в Python текстовый файл, извлеченный из некоторой базы данных.Это плоский текстовый формат без разделителей конца строки (но я знаю, что должно быть фиксированное количество столбцов).Каждая новая строка идентифицируется с увеличенным идентификатором ("0001", "0002", "0003" в примере ниже).

Я пробовал разные методы, в конечном итоге этот:

with open('url.txt', "rb") as f:
    df = f.read().decode(errors="replace")

Но это дает мне гигантскую строку ... Затем я попробовал какое-то регулярное выражение, чтобы разделить Id с помощью цикла, а затем подразделитьна "," проблема заключается в том, что иногда отсутствующие данные кодируются \N без кавычек и никогда не возвращают одинаковое количество столбцов в строке.Образец данных:

"0001","2015-01-01","doc","eab4e80fec7352a7","https://www.paypal.com/us","setRequestHeader(\"Content-Type\")","0002","2015-01-02","doc","0",\N,\N,"0003",etc.

ожидаемый вывод должен быть pandas-кадром данных со столбцами: id, дата, тип документа, хэш, URL-адрес, код.Есть идеи, как мне это сделать?

1 Ответ

0 голосов
/ 06 декабря 2018

Чтобы получить ваш фрейм данных, вы можете сделать что-то вроде этого:

with open('testfloat', "rb") as f:
    df = f.read().decode(errors="replace")
df = df.replace('\\N', '""')  # Replace \N by empty strings
df = df[1:-1]  # remove first and last "
df_list = df.split('","')  # Splitting values

array = [df_list[i:i+6] for i in range(0, len(df_list), 6)]  # Extract the lines

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