Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 21:41 28.04.24 
Компютри и Интернет
   >> Perl
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | >> (покажи всички)
Тема Porskajete kak da stane tozi Regular Expression  
Авторricki (Нерегистриран)
Публикувано14.04.03 22:03



Kak moga da vzema opredelena stoinost ot string, koqto moje da bade ogradena s kavichki, a moje i da ne bade. Naprimer:

156,"1,234",567,845 ili 156,234,567,845

Polzvam sledniq regexp:

$input =~ /(.+),["](.+)["],(.+),(.+)/;

no kogato nqmam kavichki uslovieto se narushava i $1,$2,$3 i $4 sa prazni.



Тема Re: Porskajete kak da stane tozi Regular Expressionнови [re: ricki]  
Авторusermod (Нерегистриран)
Публикувано14.04.03 23:45



ako tezi variables sa razdeleni s edin i susht symbol (kakto s zapetaiqta v sluchaiq), to udachno e da polzvash split. So:

my @array = split /,/, (1"2"3, 23, "3"2, "54");



Тема Re: Porskajete kak da stane tozi Regular Expressionнови [re: usermod]  
Авторricki (Нерегистриран)
Публикувано15.04.03 03:02



Tam e problema, che ne moga da gi splitna, zashtoto shte se razvali chisloto mejdu kavichkite.

Misli si za CSV file - comma delimited Excel data, kadeto hilqdite se otdelqt sashto sas zapetaiki i za da nqma obarkvane Excel gi slaga v kavichki:

100, "1,100",120,"22,100"
101,4,345,50

neka $input ima stoinostta na vseki red, togava ako polzvam split(/,/,$input) parvia red shte e greshen, a vtoriq ne

($one, $two, $three, $four) = split(/,/,$input);

rezultata shte bade:
$one => 100
$two => "1
$three => 100"
$four => 120

koeto nqma da e vqrno, zashtoto na men mi trqbvat 100; 1,100; 120; 22,100

Zatova sega polzvam:
$input =~ /(.+),"(.+)","*(.+)"*,"(.+)"/;

no neznam zashto $4 e prazen, kogato $3 ima kavichki, ako $3 nqma kavichki vsichko si e OK.



Тема Re: Porskajete kak da stane tozi Regular Expressionнови [re: ricki]  
Авторdarklord (Нерегистриран)
Публикувано15.04.03 23:29



Предлагам ти това решение:
# ако $x е това, което трябва да се преобразува:
$x = q(100, "1,100",120,"22,100") ;

$x =~ s/\"(\w+),(\w+)\"/\"$1:$2\"/g ;
$x =~ tr/,"/\t / ;
$x =~ s/:/,/g ;
@arr = split(/\t/, $x) ;



Тема Re: Porskajete kak da stane tozi Regular Expressionнови [re: darklord]  
Авторricki (Нерегистриран)
Публикувано06.05.03 01:34



Благодаря за помоща,

Това последното е много добра идея, но не в този й вид, защото се ограничавам с краен брой запетайки, т.е. ако имам милион трябва да добавя, $3 и $4 за милярд, а една и съща колона може да имам различен брой запетайки. Не мога да знам предварително колко са запетайките.

Иначе това за \t ми хареса и в краина сметка накарах клиента да праща Tab-delimited файлове вместо CSV формат и проблемите със запетайките отпаднаха.



Тема Re: Porskajete kak da stane tozi Regular Expressionнови [re: ricki]  
Авторedno momiche (Нерегистриран)
Публикувано06.05.03 17:06



kolko ti e goliam file-a?
az imah sashtia problem, sas exportant file ot access, comma delimited
stoinostite se slagat v kavichki samo ako samite te sadurjat zapetaika.. mnogo kofti, kato pri men osven cifri imashe i literals i drugi bozi

no moia file ne beshe ogromen, i az si reshih problema taka:

2 pass-a:
1) smeniam delimitera (v/u celia file)
2) formatiram ostanaloto kakto mi triabva

za 1) mojesh da polzvash primerno:

perl -pi -e 's/(".*?")*,/\1|/g;' mydataexportfile

(mojesh da imash prazna parva kletka)



Тема Re: Porskajete kak da stane tozi Regular Expressionнови [re: ricki]  
Авторedno momiche (Нерегистриран)
Публикувано06.05.03 17:10



:)) chak sega go prochetoh..

ami, hubavo e che mojesh da nalagash formata. az niamah tazi vazmojnost..



Тема Re: Porskajete kak da stane tozi Regular Expressionнови [re: edno momiche]  
Авторsas (Нерегистриран)
Публикувано07.05.03 16:48



DBD::CSV??



Тема Re: Porskajete kak da stane tozi Regular Expressionнови [re: sas]  
Авторedno momiche (Нерегистриран)
Публикувано07.05.03 17:36



za moite celi izpolzvaneto na tozi modul ili podoben beshe absolutno bezmisleno, osven tova e bugav, ili pone beshe predi okolo 3 godini.

ot tova koeto beshe napisalo momcheto mislia che na nego mu triabva da parse-va celia file, a ne da runva query-ta s/u nego



Тема Re: Porskajete kak da stane tozi Regular Expressionнови [re: ricki]  
Авторsas (Нерегистриран)
Публикувано07.05.03 20:24



http://rousse.pm.org/book/cookbook/ch01_16.htm
-quote-
From Mastering Regular Expressions.
sub parse_csv {
my $text = shift; # record containing comma-separated values
my @new = ();
push(@new, $+) while $text =~ m{
# the first part groups the phrase inside the quotes.
# see explanation of this pattern in MRE
"([^\"\\]*(?:\\.[^\"\\]*)*)",?
| ([^,]+),?
| ,
}gx;
push(@new, undef) if substr($text, -1,1) eq ',';
return @new; # list of values that were comma-separated
}
-quote-




Страници по тази тема: 1 | 2 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.