LINUX.ORG.RU

[noob][dbf -> xml]

 


0

1

Добрый день, лор. Есть задача преобразовать *.dbf файлы в xml, притом, сделать, попутно, некоторые преобразования над даннми (одни поля разделить, другие переименовать - ну и в таком духе). На данный момент остановился на решении использовать модуль для питона dbf (есть еще dbfpy который работает аналогично). Проблема в том, что строковые поля в дбфках в кодировке cp866 и модуль dbf почему - то не правильно считывает русские символы.

Есть утилита dbf (cli) - дак она умеет бдф преобразовывать в SQL запросы (сначала create table потом много insert into) и если эти инсерты сделать

cat inserts.sql | iconv -f CP866 -t UTF8 > out.sql
, то в файле out.sql оказываются нормальные инсерты с русскими символами, которые потом можно грузить, напрмер, в sqlite3, а оттуда обрабатывать и преобразовывать в xml средствами хоть питона хоть чего другого.

Делаю в питоне вот так

import dbf
con = dbf.Table("P.dbf", dbf_type = 'fp', codepage = 'cp866')
con.current()
Out[3]:  045-842-187 680211 22981               ���������                               ������                                  ������������                            �1945/01/0108371 00 00236966  1471000               71000000
con.current()[3].decode('cp866')
Out[4]: u'\u2568\u0434\u2568\u0420\u2568\u042d\u2568\u0433\u2568\u0427\u2568\u043f'

В общем, из питона ну никак не получается прочитать русские символы, извращаться со смесью скриптов и питона (как было описано выше) не хотелось бы. Как можено решить подобную пробему нормально ?

Вот неужели никто не делал подобного ?

s9gf4ult ★★
() автор топика

Во-первых вы совершенно зря светите здесь данные из файла, ну а во-вторых, без всяких проблем можно использовать perl и модуль XBase.

anonymous
()

Берешь java, scala, groovy (на выбор), берешь http://www.sql.ru/forum/actualtopics.aspx?search=javadbf&bid=38 и любой xsl-движок на жабе... Профит


тут пару лет назад была эпичная ветка про обработку XML в жабе, лиспе и пифоне. Победили библиотеки жабы

Karapuz ★★★★★
()
Ответ на: комментарий от anonymous

Про постгресс - зачотно, буду знать на будущее. Хрень, которую я делаю, не совсем просто скрипт. Если бы я это делал для себя, то обошелся бы скриптами на баше с использованием dbf.

Дальше продолжать?

Да. Как ?

Надо програмку с гуем сделать, так что альтернатив питону я не вижу. Пёрл не переношу. А проблему с пейстоном я уже описал.

s9gf4ult ★★
() автор топика

Портал питон программистов здесь:
python.su/forum/viewtopic.php?pid=8113
python.su/forum/viewtopic.php?id=303
forum.allnokia.ru/viewtopic.php?t=13921
gis-lab.info/forum/viewtopic.php?t=2430

Karapuz ★★★★★
()
Ответ на: комментарий от Karapuz

спасибо за урок техничного гугления

s9gf4ult ★★
() автор топика
Ответ на: комментарий от Karapuz

либа ydbf таки заработала - читает из дбф сразу в уникод (надо указать кодировку в дбф при открытии)

Кстати, а какие аргументы против питона, кроме «да этож блять говно» ?

Судя по всему, питон не слишком отстает от руби, о котором народ отзывается лестно.

s9gf4ult ★★
() автор топика
Ответ на: комментарий от s9gf4ult

>Судя по всему, питон не слишком отстает от руби, о котором народ отзывается лестно.

Ахахаха, сравнил. Питон - это круто, удобно и хорошо, а руби - поделка для фриков с крашеными волосами.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.