Re: grupiranje csv , python ili perl
Poslao bilbdonraa on 12.09.2010 13:37:39
napokon nesto konkretno ,tako da zatvorim ovaj topic, no ako netko vidi 2+2 (tnx ravilov,ne znam sto mi bi)neka javi :)
#!/usr/bin/python
###########
file='lista2'
a = open(file)
b = a.readlines()
a.close
b.sort()
c = [c[:-1] for c in b]
d=len(b)
e=0
aak=0
tot=0
###########
grupsum = open('sortirano', 'w')
while d>e:
bbkv=c[e].split(';')
if bbkv[0]!='':
intbbkv=int(bbkv[1])
if aak and bbkv[0] != aak:
grupsum.write(aak+'='+str(tot)+'\n')
print aak+'='+str(tot)
tot=0
aak=bbkv[0]
tot+=intbbkv
e+=1
if d==e:
print aak+'='+str(tot)
grupsum.write(aak+'='+str(tot)+'\n')
grupsum.close()
kljuc je
if aak and bbkv[0] != aak:
i stvarno net je prepun tutoriala za ovakve slucajeve ako znas sto trazis :)
jedan od
linkovahvala jos jednom
Re: grupiranje csv , python ili perl
Poslao ravilov on 10.09.2010 16:41:08
Savjet za sljedeći put: kad postaš kôd ovdje na forum, preporučljivo ga je staviti između [
code] i [
/code] tagova, onda se očuva formatiranje i sve skupa bolje izgleda.
Što se tiče tvoje skripte, najzanimljivi mi je ovaj dio:
Čemu to? Ne znam baš dobro python, ali ovo "2+2" se čini totalno beskorisno i bespotrebno... Što nije bilo lakše reći "if total != 0:", bez "else"?
Re: grupiranje csv , python ili perl
Poslao bilbdonraa on 10.09.2010 9:24:11
a nesto sam kao uspio skrpati izgleda gore od frankenstein-a ali radi. mislim , vjerojatno postoji mnogo elegantnije rjesenje ali za pocetak ce i ovo biti ok.
hvala na usmjeravanju.
so long, and thanks for all the fish ;)
#!/usr/bin/python
fh = open("text")
lista= fh.readlines()
fh.close
lines = [lines[:-1] for lines in lista]
lines2=[int(i) for i in lines]
###############################
total=0
y=''
count=1
for x in lines2:
if x==y:
count+=1
total=count*x
else:
count=1
if total==0:
2+2
else:
print total
total=0
y=x
if total==0:
2+2
else:
print total
Re: grupiranje csv , python ili perl
Poslao igustin on 09.09.2010 23:20:27
Ni ja ne pričam Python dovoljno tečno, pa ti preporučam da probaš i na razmjena.org, tamo provjereno ima Pythonovaca.
Re: grupiranje csv , python ili perl
Poslao ravilov on 09.09.2010 23:02:05
Još uvijek tvrdim da postoji čitava armada tutoriala za ovo, po cijelom internetu... Kreni odavde:
http://www.google.com/ Anyway, ja ti čini mi se više ne mogu pomoći, jerbo ne govorim python baš tečno...
Re: grupiranje csv , python ili perl
Poslao bilbdonraa on 09.09.2010 11:04:36
hvala na odgovorima .
do sada sam dosao do tu
ali cini se da je ovo ok samo za pronalazenje duplikata :), barem nesto.
nikako ne mogu shvatiti kako ocitati broj i zbrojiti ga sa sljedećim.
kada pogledam ovu liniju u AWK-u place mi se, tako je jednostavno i djelotvorno, savrseno ,ali ne mogu to prevesti u python :(
gdje grijesim?
u ovom slucaju radi se o 'text' dokumetu tipa
#!/usr/bin/python
fh = open("text")
lista= fh.readlines()
fh.close
lines = [lines[:-1] for lines in lista]
lines2=[int(i) for i in lines]
###############################
total=0
y=''
for x in lines2:
if x==y:
print y
total += x
y=x
print total
Re: grupiranje csv , python ili perl
Poslao igustin on 07.09.2010 16:53:26
Evo ti varijanta rješenja s AWK onelinerom:
awk 'BEGIN {FS=";"} {if(NR>2) t[$1]+=$3} END {for(x in t) print x "=" t[x]}' < podaci
...gdje je 'podaci' datoteka s podacima kakve si naveo.
Re: grupiranje csv , python ili perl
Poslao ravilov on 07.09.2010 16:34:38
Radiš... dokumente?!
Kao, baš prave fizičke datoteke na disku?
Šališ se?
A i jedan i drugi jezik imaju toliko mnogo tako divnih memorijskih struktura...
Evo otprilike kako bi to ja, u perl-u:
#! /usr/bin/perl -w
use strict;
# preskoci prva dva retka
my $dummy = <STDIN>;
$dummy = <STDIN>;
my %data = ();
while (<STDIN>) {
s{[\r\n]+$}{}g;
my ($a, $b, $c) = split(/;/, $_);
$data{$a} = 0 unless defined($data{$a});
$data{$a} += $c;
}
foreach (sort(keys(%data))) {
print STDOUT sprintf('%d=%d', $_, $data{$_})."\n";
}
BTW, prilično mi je nevjerojatno da za nešto ovako banalno i trivijalno nema već barem 1000 tutoriala i objašnjenja na netu...
grupiranje csv , python ili perl
Poslao bilbdonraa on 07.09.2010 16:20:02
ehlo :)
u python-u ili perl - u
imam jedan 'problemcic' .
nikako da provirim izvan kutije , ne znam ni sto bih vise upisivao u google
imam .csv dokument tipa:
A;B;C
------
1;trt;2
1;rt;2
1;rtd;2
1;ert;2
2;xd;1
2;xd;1
2;xd;1
3;45;3
3;46;3
3;tz;3
kako grupirati sve sto u koloni A ima vrijednost '1' i zbrojiti pripadajuci C ? tako da npr za 1 dobijem krajnu vrijednost 8
1=8
2=3
3=9
rjesenje koje sada imam je -> prolazim kroz linije i na osnovi prve kolone radim textualne dokumente u koje sam onda >> upisivao vriijednost te onda tu vrijednost ocitao iz tog textualnog dokumenta i zbrojio.
mislim da je to 'malo' zbrljano rjesenje pogotovo sto moram proci kroz , pa puno linija.
kako to 'potrpati' u memoriju i onda raditi sa tim ?
unaprijed hvala
Ova poruka je od: http://www.linux.hr/newbb/viewtopic.php?forum=8&topic_id=2355