2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
|
|
1 | |
Распарсить файл06.05.2015, 06:55. Показов 4983. Ответов 34
Метки нет (Все метки)
Помогите разбить файл такого типа:
Абрамова,Валентина,Александровна,27/11/1949,50041088828891,Заключение брака,отдел ЗАГС АКИМОВ,СЕРГЕЙ,ВАСИЛЬЕВИЧ,30/11/1983,50041088828063,Заключение брака,отдел ЗАГС АКИМОВ,СЕРГЕЙ,ВАСИЛЬЕВИЧ,30/11/1983,50041088828063,Расторжение брака,отдел ЗАГС АЛЕШКОВА,ОЛЬГА,СЕРГЕЕВНА,22/12/1975,50041088829728,Заключение брака,отдел ЗАГС АЛЕШКОВА,ОЛЬГА,СЕРГЕЕВНА,22/12/1975,50041088829728,Заключение брака,отдел ЗАГС АЛЕШКОВА,ОЛЬГА,СЕРГЕЕВНА,22/12/1975,50041088829728,Расторжение брака,отдел ЗАГС Батышкина,Ольга,Владимировна,03/04/1987,50041088830114,Заключение брака,отдел ЗАГС Безрукова,Ольга,Николаевна,03/04/1983,50041088824428,Заключение брака,отдел ЗАГС Евенко,Алексей,Сергеевич,07/05/1985,50041088822689,Смерть,Специализированный отдел регистрации актов гражданского состояния о смерти По полям таблицы Фамили Имя Отчество Дата_рождения(причем дд.мм.гггг) ID Информация(все, что после ID)
0
|
06.05.2015, 06:55 | |
Ответы с готовыми решениями:
34
Нужно распарсить файл docx Содержимое каждой страницы распарсить с помощью BeautifulSoup и сохранить всё в файл Как распарсить json? Распарсить выхлоп objdump |
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
|
|
09.05.2015, 10:45 [ТС] | 21 |
Модули не нужны, так как в них только строки соединения к базам и пароли, данные написаны в начале темы...если вы потратили несколько лет на изучение питона, то я вас поздравляю, я только-только начал им заниматься...
0
|
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
|
09.05.2015, 11:43 | 22 |
Safer54rus, чудак человек. Тебе сказали в чем ты не прав, а ты ерунду какую-то несёшь. Вот вообще 0x10 на 100% во всем прав и я с ним согласен.
Когда код на форум выкладываешь, нужно выложить вспомогательные модули, бд и т д или убрать из кода все лишнее и оставить только проблемный участок, чтобы было проще тебе-же помочь.
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
||||||
09.05.2015, 13:50 | 23 | |||||
Я начал было писать большой пост с разбором всех косяков кода, а потом махнул рукой: все равно потенциально можно упереться в базу, которой нет.
Поэтому только отмечу пару очевидных косяков. 1. Функция получения содержимого файлов — один сплошной баг. Во-первых, она обходит все файлы в каталоге, хотя этот же обход реализован в вызывающем коде. Приводит это к тому, что одни и те же записи потециально могли бы вставляться множество раз. Спасает от этого тот факт, что обработанные файлы переименовываюся, что не делает функцию более корректной. 2. В этой же функции поле text каждой записи содержит конкатенацию всех хвостов всех записей. Явно не то, чего хотелось. 3. Отрезание первых полей и склеивание последних реализовано огромным сложным куском кода. Примерный вид функции, с которым еще как-то можно работать привожу ниже. Детали реализации можно добавить по вкусу:
Автору: сначала локализуй где проблема: в питоньем коде или при вставке в базу. В определенный момент в коде есть участок, где доступен список sql-запросов для вставки. Техника отладки такая: 1. Подготовить базу. Пустую. 2. Подготовить входные файлы. Три файла, по две строчки в каждом. Достаточно маленькие значения, чтобы можно было читать глазами. 3. В коде вывести все запросы к базе. Убедиться, что они соответствуют ожидаемым, т.е. присутствуют все записи. 4. Посмотреть в базу: все ли записи были добавлены. На этом этапе можно понять где происходит ошибка и разбираться с ней: либо не все записи получаем, либо не все вставляем. Что-то более конкретное тут сказать сложно.
0
|
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
|
|||||||||||
12.05.2015, 06:25 [ТС] | 24 | ||||||||||
0x10, я знаю, что код баганый, но что вы ожидаете от новичка?
Объединил всё в одну процедуру, но при этом выдаёт:
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
12.05.2015, 07:34 | 25 |
Первый аргумент - строка, а ты пытаешсья сделать с ним в строке формата вот это: {0[QueryKey]}
1
|
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
|
|
12.05.2015, 08:10 [ТС] | 26 |
0x10, а подскажите, функцию очистки, а то ret_dict_list.clear() не работает
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
12.05.2015, 10:08 | 27 |
ret_dict_list = []
А вообще это признак того, чтобы переписать код и минимизировать состояния. Декомпозиция на функции тут поможет.
0
|
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
|
|
12.05.2015, 11:13 [ТС] | 28 |
тоже не обнуляет, использовал blanc_dict['1','10']=[]
Добавлено через 26 минут Выдаёт
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
12.05.2015, 11:36 | 29 |
0
|
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
|
|
12.05.2015, 11:44 [ТС] | 30 |
0
|
2740 / 2339 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
|
||||||
12.05.2015, 11:54 | 31 | |||||
Тебя спрашивают: "Ты понимаешь, что делает эта строка?"
Эта строка создаёт в словаре запись, где ключ это кортеж, а значение пустой список.
0
|
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
|
|
12.05.2015, 12:58 [ТС] | 32 |
alex925, и в какую часть это вставлять? чем плохо "blanc_dict['1','10']=[]"? в справочнике именно так написано, без всего остального
Добавлено через 57 минут Последняя проблема, в blanc_dict['Text']=st вставляет всю информациюпосле поля ID со всех строк, как это исправить?
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
12.05.2015, 13:10 | 33 |
В 31 строке к переменной st постоянно добавляется содержимое. Я об этом сказал несколько постов назад, а в 23 посте привел пример кода как могла бы выглядеть функция разбора файла.
Проблема опять та же самая - введено дополнительное состояние, из-за которого возникают ошибки.
0
|
2 / 2 / 1
Регистрация: 31.05.2014
Сообщений: 169
|
|
12.05.2015, 13:22 [ТС] | 34 |
0
|
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
|
|
12.05.2015, 13:25 | 35 |
Есть куча глобальных переменных, среди которых и st. По задумке эти переменные должны быть локальными, т.е. область видимосит должна быть ограничена блоком обработки одной записи.
Сейчас же это глобалки, которые сохраняют свое значение от обработки одной записи к другой. Отсюда и проблемы.
1
|
12.05.2015, 13:25 | |
12.05.2015, 13:25 | |
Помогаю со студенческими работами здесь
35
Как распарсить json? Как распарсить динамическую таблицу? Распарсить текстовый файл Распарсить файл с шифрованием Распарсить json файл Как распарсить этот файл Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |