powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / perl и чтение csv файлов
9 сообщений из 9, страница 1 из 1
perl и чтение csv файлов
    #38832385
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. сделал обработчик csv файлов, но при обработке программа перестает работать с ошибкой : Wide character in subroutine entry at /usr/lib/perl/5.14/Encode.pm line 174, <$fd> line 36. причем предыдущие строки файла обрабатываются нормально. файл имеет кодировку cp1251, разделитель ";"
текст программы:
Код: perl
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
#!/usr/bin/perl -w

use strict;
use warnings;
use Encode;
use Text::CSV_XS;

my $csv = Text::CSV_XS->new({
        'binary'=>1,
        'auto_diag'=>1,
        'sep_char' => ";"
        });

open my $fd, test.csv or die ("could not open 'test.csv' file for reading \n");
while (my $row=$csv->getline ($fd))
        {
        my @source_text;
        for (my $col=0; $col<6;$col++)
                {
                push (@source_text, encode ("UTF-8",decode("cp1251",$row->[$col])));
                }
        print "@source_text\n"
        }

$csv->eol or $csv->error_diag();
close $fd;


данные необходимо выводить в кодировке UTF8, не могу понять из-за чего возникает ошибка. все данные в test.csv одинаковые, 36 строка ничем не отличается от других
...
Рейтинг: 0 / 0
perl и чтение csv файлов
    #38832404
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
файлик правда очень большой, 150 мб
...
Рейтинг: 0 / 0
perl и чтение csv файлов
    #38832415
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen25,

Посмотри в Hex-mode - может там какой непечатный символ затесался или 0.
...
Рейтинг: 0 / 0
perl и чтение csv файлов
    #38832727
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster,

вот как делал мелкософт всё на от...ись, так и делает. отокрываю xlsx файл, сохраняю как csv. и о чудо, появляются какие то не внятные символы. была два знака Е№ стал один знак Е а сверху как знак ударения. в xml файл не сохранишь. делают фигню мягко говоря, еще и по 10 т.рублей просят за свой продукт. вот и вся проблема. и аналогов нет. открываешь тот же xlsx файл в openoffice например, а там появляются в колонках лищние символы. короче, косолапые там все
...
Рейтинг: 0 / 0
perl и чтение csv файлов
    #38832728
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
evgen25,

извините, невры уже. 2 дня мучался с этой проблемой, но такого финала даже не ожидал.
...
Рейтинг: 0 / 0
perl и чтение csv файлов
    #38832842
Фотография volodin661
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen25,

ты не пробовал ещё вариант сохранить как XLS, а затем Spreadsheet::ParseExcel )
...
Рейтинг: 0 / 0
perl и чтение csv файлов
    #38832851
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще можно распаковать и парсить xlsx как обычный xml. Правда информация в нем хранится немного извращенно (в отличии от Word, OO Calc, OO Writer): значения хранятся в отдельном файле sharedstrings.xml, а файл разметки хранятся индексы на строки из файла sharedstring.xml. Я знаю зачем это сделано, но когда в обход COM занимаешься редактированием xlsx, начинаешь ненавидеть разрабочиков Excel.
...
Рейтинг: 0 / 0
perl и чтение csv файлов
    #38833390
evgen25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JeStone,

я пробовал парсить xlsx столкнулся с тем что на больших файлах непомерно жрет оперативную память. и для файла в 100мб сожрать 16Гб оперативной памяти это норма. пытался вытаскивать xml файлы, но сопоставлять три файла это что то с чем то. и еще один момент, числа в 12-15 знаков там храняться в эспонициальном формате. разработчиков мелкософта я уже не навижу
...
Рейтинг: 0 / 0
perl и чтение csv файлов
    #38833440
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
evgen25,
а кто сказал, что будет легко )))
Проблему оперативной памяти можно решить через SAX. Что касается остального, надо просто смириться )
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / perl и чтение csv файлов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]