Re: cerco aiuto x uno script
> > 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.
Reply to: