[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: