> > deve cercare i doppioni? > > si, esatto, ma i doppioni solo confrontando il campo 1 e 2 > > alüra... > > questo è il file di partenza: > <us>hello</us><it>ciao</it><path>/lib/file1</path> > <us>hello</us><it>miao</it><path>/lib/file2</path> > <us>hello</us><it>prrr!</it><path>/lib/file3</path> > <us>year</us><it>anno</it><path>/lib/file4</path> > <us>day</us><it>giorno</it><path>/lib/file5</path> > <us>month</us><it>mese</it><path>/lib/file6</path> > <us>month</us><it>Mese</it><path>/lib/file7</path> > <us>second</us><it>secondi</it><path>/lib/file8</path> > > questo dovrebbe essere il risultato: > > hello = ciao - path: /lib/file1 > hello = miao - path: /lib/file2 > hello = prrr! - path /lib/file3 > month = mese - path: /lib/file6 > month = Mese - path: /lib/file7 > > e ignora tutte le linee singole come per esempio le linee 4, 5 e 8
Allora, prova questo (in php), se ti va bene lo puoi facilmente tradurre in python (ovviamente fai in modo che $testo venga letto da un file) Se invece non ti va bene, fa niente :D se poi ti fa schifo allora sono pentito.... <?php $testo=" <us>hello</us><it>ciao</it><path>/lib/file1</path> <us>hello</us><it>miao</it><path>/lib/file2</path> <us>hello</us><it>prrr!</it><path>/lib/file3</path> <us>year</us><it>anno</it><path>/lib/file4</path> <us>day</us><it>giorno</it><path>/lib/file5</path> <us>month</us><it>mese</it><path>/lib/file6</path> <us>month</us><it>Mese</it><path>/lib/file7</path> <us>second</us><it>secondi</it><path>/lib/file8</path> "; preg_match_all("/<.+>(.+)<\/.+><.+>(.+)<\/.+><.+>(.+)<\/.+>/Us",$testo,$matches); foreach($matches[1] as $key=>$val) { $parole[$val][]=array($matches[2][$key],$matches[3][$key]); } print_r($parole); ?> l'array $parole sarà così: Array ( [hello] => Array ( [0] => Array ( [0] => ciao [1] => /lib/file1 ) [1] => Array ( [0] => miao [1] => /lib/file2 ) [2] => Array ( [0] => prrr! [1] => /lib/file3 ) ) [year] => Array ( [0] => Array ( [0] => anno [1] => /lib/file4 ) ) [day] => Array ( [0] => Array ( [0] => giorno [1] => /lib/file5 ) ) [month] => Array ( [0] => Array ( [0] => mese [1] => /lib/file6 ) [1] => Array ( [0] => Mese [1] => /lib/file7 ) ) [second] => Array ( [0] => Array ( [0] => secondi [1] => /lib/file8 ) ) ) ... che mi sembra comodo da gestire. Ovviamente questo funziona se i tag sono solo tre per linea, perché se cambiassero sempre la cosa diventerebbe più complessa. Questo script però è adatto solo con file di piccole dimensioni, altrimenti $testo+$matches+$parole ti mangeranno chili e chili di ram :) Per file grossi andrebbe riscritto in un modo completamente diverso.