[Risolto][Python] Come spezzettare la tabella dell'esempio

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Bakuriu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1156
Iscrizione: venerdì 23 ottobre 2009, 23:43
Desktop: KDE4
Distribuzione: Kubuntu 12.04 LTS - x86_64

Re: [Python] Come spezzettare la tabella dell'esempio

Messaggio da Bakuriu »

BlueEyes ha scritto:Ciao, e grazie per la risposta.
Ho cercato di replicare il tuo codice (per capirne il funzionamento), ma ho trovato l'errore che riporto sotto.

Ecco l'output

Codice: Seleziona tutto

>>> import StringIO
>>> c = StringIO.StringIO()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'StringIO'
>>>
Molto strano.
Che versione di python hai? È davvero strano che tu riesca ad importare StringIO ma che questo non contenga la classe StringIO.

Comunque crap aveva utilizzato StringIO solamente per evitare di dover creare un file di testo da utilizzare come esempio.
Devi pensare a quello che ha scritto come se al posto di quella StringIO ci fosse il tuo oggetto file ottenuto da open(ovviamente non c'è necessità di scriverlo, perchè si presume che il tuo file non sia vuoto.).
Avatar utente
BlueEyes
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1330
Iscrizione: giovedì 15 marzo 2012, 14:08

Re: [Python] Come spezzettare la tabella dell'esempio

Messaggio da BlueEyes »

Riscrivo il messaggio d'errore completo della v. di Python (installata dai repo di Ubuntu 11.04)

Codice: Seleziona tutto

$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import StringIO
>>> c = StringIO.StringIO()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'StringIO'
>>> 
e ricopio il codice:

Codice: Seleziona tutto

LINE_MATCHER = (lambda line: line.lstrip()[0].isdigit())
INDEXES = (1, 3, 5, 8)

def skip_fst (n):
    if n == 0:
        return lambda line:line
    else:
        return lambda line: line[n:]

def get_fields(fobj, indexes=INDEXES, line_matcher=LINE_MATCHER, skip=0):
        '''Given a file-like object yields the interesting fields
        for each line.
        '''
        fskip = skip_fst(skip)
        for line in fobj:
            if line_matcher(line):
                yield [value for i,value in enumerate(fskip(line).split())
                             if i in indexes]
Comunque, proseguirò con il mio odd.py cercando di utilizzare fskip. E, come al solito, se ci sono intoppi ... non esiterò a postarli.
Ciao

EDIT.
  • Comunque crap aveva utilizzato StringIO solamente per evitare di dover creare un file di testo da utilizzare come esempio.
Una tabella minimale (per effettuare dei test) l'avevo postata più su e la ricopio. Eccola:

Codice: Seleziona tutto

2!7!8 56116.00 P  0.114407 0.006553  0.387180 0.008213  P 0.4248871 0.0065737                 P   -75.490     .600   -12.365     .600
12!7!9 56117.00 P  0.115809 0.006609  0.386545 0.008302  P 0.4247509 0.0066554                 P   -76.204     .600   -12.411     .600
12!710 56118.00 P  0.117194 0.006665  0.385888 0.008391  P 0.4246868 0.0067368                 P   -76.725     .600   -12.448     .600
12!711 56119.00 P  0.118562 0.006721  0.385209 0.008480  P 0.4247279 0.0068177                 P   -76.897     .600   -12.469     .600
12!712 56120.00 P  0.119912 0.006776  0.384508 0.008568  P 0.4248887 0.0068984                 P   -76.963     .600   -12.441     .600
12!713 56121.00 P  0.121244 0.006832  0.383787 0.008656  P 0.4251683 0.0069788                 P   -77.184     .600   -12.390     .600
12!714 56122.00 P  0.122558 0.006886  0.383044 0.008744  P 0.4255519 0.0070588                 P   -77.529     .600   -12.399     .600
12!715 56123.00 P  0.123853 0.006941  0.382281 0.008831  P 0.4260083 0.0071385                 P   -77.813     .600   -12.496     .600
12!716 56124.00 P  0.125129 0.006995  0.381497 0.008918  P 0.4264934 0.0072179                 P   -77.964     .600   -12.604     .600
12!717 56125.00 P  0.126385 0.007048  0.380694 0.009005  P 0.4269541 0.0072970                 P   -78.015     .600   -12.636     .600
12!718 56126.00 P  0.127621 0.007102  0.379871 0.009091  P 0.4273365 0.0073758                 P   -77.965     .600   -12.593     .600
12!719 56127.00 P  0.128837 0.007155  0.379029 0.009177  P 0.4275968 0.0074544                 P   -77.821     .600   -12.533     .600
13!5!6 56418.00 P  0.097643 0.017451  0.394694 0.028304  P 0.1343568 0.0251504
13!5!7 56419.00 P  0.099303 0.017479  0.394607 0.028359  P 0.1326124 0.0252023
13!5!8 56420.00 P  0.100966 0.017505  0.394493 0.028414  P 0.1310318 0.0252542
13!5!9 56421.00 P  0.102631 0.017532  0.394352 0.028470  P 0.1296020 0.0253060
13!510 56422.00 P  0.104297 0.017559  0.394184 0.028525  P 0.1284343 0.0253578
13!511 56423.00 P  0.105964 0.017586  0.393989 0.028580  P 0.1274611 0.0254096
13!512 56424.00
13!513 56425.00
13!514 56426.00
13!515 56427.00
13!516 56428.00
13!517 56429.00
13!518 56430.00
Avatar utente
crap0101
Rampante Reduce
Rampante Reduce
Messaggi: 8242
Iscrizione: martedì 30 ottobre 2007, 6:33
Desktop: LXDE
Distribuzione: Ubuntu 18.04.1 LTS
Sesso: Maschile
Località: TO
Contatti:

Re: [Python] Come spezzettare la tabella dell'esempio

Messaggio da crap0101 »

rigaurdo l'errore con StringIO è abbastanza strano, i pochi riferimenti che ho trovato parlano di un conflittocausato da python-stat, ci sono un paio di riferimenti nel bugtracker di debian.
http://www.gnu.org/ http://boinc.berkeley.edu/ http://www.python-it.org/
- Ricorda le ultime parole di suo padre: «Sta' alla larga dalle chiese, figlio. La sola cosa per cui hanno la chiave è il merdaio. E giurami che non porterai mai un distintivo della legge» - W.S. Burroughs
Avatar utente
BlueEyes
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1330
Iscrizione: giovedì 15 marzo 2012, 14:08

Re: [Python] Come spezzettare la tabella dell'esempio

Messaggio da BlueEyes »

Stranezza ... nella stranezza! Anche su un'altra versione di Python (installata su Windows-Xp) ottengo lo stesso errore:

Codice: Seleziona tutto

C:\>python
Python 2.6.5 (r265:79096, Mar 19 2010, 21:48:26) [MSC v.1500
win32
Type "help", "copyright", "credits" or "license" for more in
>>> import StringIO
>>> c = StringIO.StringIO()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'StringIO'
>>>
Solo per ulteriore info. Ciao
Avatar utente
BlueEyes
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1330
Iscrizione: giovedì 15 marzo 2012, 14:08

Re: [Python] Come spezzettare la tabella dell'esempio

Messaggio da BlueEyes »

Eccellente soluzione! Grazie, Forum.
Codice:

Codice: Seleziona tutto

# ------------ slicing.py ----------------
#
LINE_TEMPLATE = '{0}\t{1}\t{2}\t{3}'
INDEXES = (0, 2, 4, 7)

LINE_MATCHER = (lambda line: line.lstrip()[0].isdigit())

def skip_fst (n):
    if n == 0:
        return lambda line:line
    else:
        return lambda line: line[n:]

def get_fields(fobj, indexes=INDEXES, line_matcher=LINE_MATCHER, skip=6):
        '''Given a file-like object yields the interesting fields
        for each line.
        '''
        fskip = skip_fst(skip)
        for line in fobj:
            if line_matcher(line):
                yield [value for i,value in enumerate(fskip(line).split())
                             if i in indexes]


def print_fields(fobj, indexes=INDEXES, line_matcher=LINE_MATCHER):
    '''Given a file-like object prints the interesting fields
    for each line.
    '''
       
    for fields in get_fields(fobj, indexes, line_matcher):
            print LINE_TEMPLATE.format(*fields)


if __name__ == '__main__':
    import sys
    print_fields(open(sys.argv[1]))

fobj = open('dummybase.txt', 'rb')

get_fields(fobj)
print_fields(fobj)

fobj.close()
Tabella minimale (rappresentativa del dbase completo). File: dummybase.txt

Codice: Seleziona tutto

12 7 6 56114.00 P  0.111556 0.006439  0.388383 0.008033  P 0.4251709 0.0064093                 P   -74.990     .600   -12.222     .600                                                     
12 7 7 56115.00 P  0.112990 0.006496  0.387793 0.008123  P 0.4250471 0.0064917                 P   -75.015     .600   -12.287     .600                                                     
12 7 8 56116.00 P  0.114407 0.006553  0.387180 0.008213  P 0.4248871 0.0065737                 P   -75.490     .600   -12.365     .600                                                     
12 7 9 56117.00 P  0.115809 0.006609  0.386545 0.008302  P 0.4247509 0.0066554                 P   -76.204     .600   -12.411     .600                                                     
12 710 56118.00 P  0.117194 0.006665  0.385888 0.008391  P 0.4246868 0.0067368                 P   -76.725     .600   -12.448     .600                                                     
12 711 56119.00 P  0.118562 0.006721  0.385209 0.008480  P 0.4247279 0.0068177                 P   -76.897     .600   -12.469     .600                                                     
12 712 56120.00 P  0.119912 0.006776  0.384508 0.008568  P 0.4248887 0.0068984                 P   -76.963     .600   -12.441     .600                                                     
12 713 56121.00 P  0.121244 0.006832  0.383787 0.008656  P 0.4251683 0.0069788                 P   -77.184     .600   -12.390     .600                                                     
12 714 56122.00 P  0.122558 0.006886  0.383044 0.008744  P 0.4255519 0.0070588                 P   -77.529     .600   -12.399     .600                                                     
12 715 56123.00 P  0.123853 0.006941  0.382281 0.008831  P 0.4260083 0.0071385                 P   -77.813     .600   -12.496     .600                                                     
12 716 56124.00 P  0.125129 0.006995  0.381497 0.008918  P 0.4264934 0.0072179                 P   -77.964     .600   -12.604     .600                                                     
12 717 56125.00 P  0.126385 0.007048  0.380694 0.009005  P 0.4269541 0.0072970                 P   -78.015     .600   -12.636     .600                                                     
12 718 56126.00 P  0.127621 0.007102  0.379871 0.009091  P 0.4273365 0.0073758                 P   -77.965     .600   -12.593     .600                                                     
12 719 56127.00 P  0.128837 0.007155  0.379029 0.009177  P 0.4275968 0.0074544                 P   -77.821     .600   -12.533     .600 
13 5 6 56418.00 P  0.097643 0.017451  0.394694 0.028304  P 0.1343568 0.0251504                                                                                                             
13 5 7 56419.00 P  0.099303 0.017479  0.394607 0.028359  P 0.1326124 0.0252023                                                                                                             
13 5 8 56420.00 P  0.100966 0.017505  0.394493 0.028414  P 0.1310318 0.0252542                                                                                                             
13 5 9 56421.00 P  0.102631 0.017532  0.394352 0.028470  P 0.1296020 0.0253060                                                                                                             
13 510 56422.00 P  0.104297 0.017559  0.394184 0.028525  P 0.1284343 0.0253578                                                                                                             
13 511 56423.00 P  0.105964 0.017586  0.393989 0.028580  P 0.1274611 0.0254096                                                                                                            
Risultato finale: tabella ridotta a 4 colonne

Codice: Seleziona tutto

>>> import slicing
56114.00        0.111556        0.388383        0.4251709
56115.00        0.112990        0.387793        0.4250471
56116.00        0.114407        0.387180        0.4248871
56117.00        0.115809        0.386545        0.4247509
56118.00        0.117194        0.385888        0.4246868
56119.00        0.118562        0.385209        0.4247279
56120.00        0.119912        0.384508        0.4248887
56121.00        0.121244        0.383787        0.4251683
56122.00        0.122558        0.383044        0.4255519
56123.00        0.123853        0.382281        0.4260083
56124.00        0.125129        0.381497        0.4264934
56125.00        0.126385        0.380694        0.4269541
56126.00        0.127621        0.379871        0.4273365
56127.00        0.128837        0.379029        0.4275968
56418.00        0.097643        0.394694        0.1343568
56419.00        0.099303        0.394607        0.1326124
56420.00        0.100966        0.394493        0.1310318
56421.00        0.102631        0.394352        0.1296020
56422.00        0.104297        0.394184        0.1284343
56423.00        0.105964        0.393989        0.1274611
>>>
Avatar utente
BlueEyes
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1330
Iscrizione: giovedì 15 marzo 2012, 14:08

Re: [Risolto][Python] Come spezzettare la tabella dell'esemp

Messaggio da BlueEyes »

Non riesco a copiare l'output su file, Il programma funziona bene e non segnala alcun errore, ma il file risu.txt contiene una riga, con la perentoria scritta "None". Qualcuno può replicare il mio test e correggere il codice? Grazie
Codice:

Codice: Seleziona tutto

# ------------ slicing2.py ----------------
#
LINE_TEMPLATE = '{0}\t{1}\t{2}\t{3}'
INDEXES = (0, 2, 4, 7)

LINE_MATCHER = (lambda line: line.lstrip()[0].isdigit())

def skip_fst (n):
    if n == 0:
        return lambda line:line
    else:
        return lambda line: line[n:]

def get_fields(fobj, indexes=INDEXES, line_matcher=LINE_MATCHER, skip=6):
        '''Given a file-like object yields the interesting fields
        for each line.
        '''
        fskip = skip_fst(skip)
        for line in fobj:
            if line_matcher(line):
                yield [value for i,value in enumerate(fskip(line).split())
                             if i in indexes]


def print_fields(fobj, indexes=INDEXES, line_matcher=LINE_MATCHER):
    '''Given a file-like object prints the interesting fields
    for each line.
    '''
       
    for fields in get_fields(fobj, indexes, line_matcher):
            print LINE_TEMPLATE.format(*fields)


if __name__ == '__main__':
    import sys
    print_fields(open(sys.argv[1]))

fobj = open('dummybase.txt', 'rb')
fd = open('risu.txt', 'w')

get_fields(fobj)
print_fields(fobj)
fd.write(str(print_fields(fobj)))

fobj.close()
fd.close()
Tabella:

Codice: Seleziona tutto

12 7 6 56114.00 P  0.111556 0.006439  0.388383 0.008033  P 0.4251709 0.0064093                 P   -74.990     .600   -12.222     .600                                                     
12 7 7 56115.00 P  0.112990 0.006496  0.387793 0.008123  P 0.4250471 0.0064917                 P   -75.015     .600   -12.287     .600                                                     
12 7 8 56116.00 P  0.114407 0.006553  0.387180 0.008213  P 0.4248871 0.0065737                 P   -75.490     .600   -12.365     .600                                                     
12 7 9 56117.00 P  0.115809 0.006609  0.386545 0.008302  P 0.4247509 0.0066554                 P   -76.204     .600   -12.411     .600                                                     
12 710 56118.00 P  0.117194 0.006665  0.385888 0.008391  P 0.4246868 0.0067368                 P   -76.725     .600   -12.448     .600                                                     
12 711 56119.00 P  0.118562 0.006721  0.385209 0.008480  P 0.4247279 0.0068177                 P   -76.897     .600   -12.469     .600                                                     
12 712 56120.00 P  0.119912 0.006776  0.384508 0.008568  P 0.4248887 0.0068984                 P   -76.963     .600   -12.441     .600                                                     
12 713 56121.00 P  0.121244 0.006832  0.383787 0.008656  P 0.4251683 0.0069788                 P   -77.184     .600   -12.390     .600                                                     
12 714 56122.00 P  0.122558 0.006886  0.383044 0.008744  P 0.4255519 0.0070588                 P   -77.529     .600   -12.399     .600                                                     
12 715 56123.00 P  0.123853 0.006941  0.382281 0.008831  P 0.4260083 0.0071385                 P   -77.813     .600   -12.496     .600                                                     
12 716 56124.00 P  0.125129 0.006995  0.381497 0.008918  P 0.4264934 0.0072179                 P   -77.964     .600   -12.604     .600                                                     
12 717 56125.00 P  0.126385 0.007048  0.380694 0.009005  P 0.4269541 0.0072970                 P   -78.015     .600   -12.636     .600                                                     
12 718 56126.00 P  0.127621 0.007102  0.379871 0.009091  P 0.4273365 0.0073758                 P   -77.965     .600   -12.593     .600                                                     
12 719 56127.00 P  0.128837 0.007155  0.379029 0.009177  P 0.4275968 0.0074544                 P   -77.821     .600   -12.533     .600 
13 5 6 56418.00 P  0.097643 0.017451  0.394694 0.028304  P 0.1343568 0.0251504                                                                                                             
13 5 7 56419.00 P  0.099303 0.017479  0.394607 0.028359  P 0.1326124 0.0252023                                                                                                             
13 5 8 56420.00 P  0.100966 0.017505  0.394493 0.028414  P 0.1310318 0.0252542                                                                                                             
13 5 9 56421.00 P  0.102631 0.017532  0.394352 0.028470  P 0.1296020 0.0253060                                                                                                             
13 510 56422.00 P  0.104297 0.017559  0.394184 0.028525  P 0.1284343 0.0253578                                                                                                             
13 511 56423.00 P  0.105964 0.017586  0.393989 0.028580  P 0.1274611 0.0254096                                                                                                            
Output: nessun errore

Codice: Seleziona tutto

$ python
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) 
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import slicing2
56114.00	0.111556	0.388383	0.4251709
56115.00	0.112990	0.387793	0.4250471
56116.00	0.114407	0.387180	0.4248871
56117.00	0.115809	0.386545	0.4247509
56118.00	0.117194	0.385888	0.4246868
56119.00	0.118562	0.385209	0.4247279
56120.00	0.119912	0.384508	0.4248887
56121.00	0.121244	0.383787	0.4251683
56122.00	0.122558	0.383044	0.4255519
56123.00	0.123853	0.382281	0.4260083
56124.00	0.125129	0.381497	0.4264934
56125.00	0.126385	0.380694	0.4269541
56126.00	0.127621	0.379871	0.4273365
56127.00	0.128837	0.379029	0.4275968
56418.00	0.097643	0.394694	0.1343568
56419.00	0.099303	0.394607	0.1326124
56420.00	0.100966	0.394493	0.1310318
56421.00	0.102631	0.394352	0.1296020
56422.00	0.104297	0.394184	0.1284343
56423.00	0.105964	0.393989	0.1274611
>>> quit()
Bakuriu
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1156
Iscrizione: venerdì 23 ottobre 2009, 23:43
Desktop: KDE4
Distribuzione: Kubuntu 12.04 LTS - x86_64

Re: [Risolto][Python] Come spezzettare la tabella dell'esemp

Messaggio da Bakuriu »

Guarda che "print_fields" stampa sullo standard output quindi se fai str(print_fields(...)) ottieni str(None) -> 'None'.
Puoi risolvere semplicemente lanciandolo da terminale così:

Codice: Seleziona tutto

python slicing.py nome-file-con-tabella > outputfile.txt
In questo modo al posto di stampare a video scriverà su "outputfile.txt" (occhio che il file viene sempre sovrascritto, quindi se hai già un file "outputfile.txt" poi questo file conterrà solo l'output dello script).

Cancella tutto quello che viene *dopo*:

Codice: Seleziona tutto

if __name__ == '__main__':
    import sys
    print_fields(open(sys.argv[1]))
Questa parte di codice si preoccupare già di aprire il file che gli passi da riga di comando e di chiamare print_fields **solo se lo script viene lanciato da terminale, non fa questo se viene importato**.
Avatar utente
BlueEyes
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1330
Iscrizione: giovedì 15 marzo 2012, 14:08

Re: [Risolto][Python] Come spezzettare la tabella dell'esemp

Messaggio da BlueEyes »

Perfetto! Grazie mille. Ecco il nuovo codice, il comando da terminale e il file risultato:

Codice: Seleziona tutto

# ------------ slicing2.py ----------------
#
LINE_TEMPLATE = '{0}\t{1}\t{2}\t{3}'
INDEXES = (0, 2, 4, 7)

LINE_MATCHER = (lambda line: line.lstrip()[0].isdigit())

def skip_fst (n):
    if n == 0:
        return lambda line:line
    else:
        return lambda line: line[n:]

def get_fields(fobj, indexes=INDEXES, line_matcher=LINE_MATCHER, skip=6):
        '''Given a file-like object yields the interesting fields
        for each line.
        '''
        fskip = skip_fst(skip)
        for line in fobj:
            if line_matcher(line):
                yield [value for i,value in enumerate(fskip(line).split())
                             if i in indexes]


def print_fields(fobj, indexes=INDEXES, line_matcher=LINE_MATCHER):
    '''Given a file-like object prints the interesting fields
    for each line.
    '''
       
    for fields in get_fields(fobj, indexes, line_matcher):
            print LINE_TEMPLATE.format(*fields)


if __name__ == '__main__':
    import sys
    print_fields(open(sys.argv[1]))

fobj = open('dummybase.txt', 'rb')

get_fields(fobj)
print_fields(fobj)

fobj.close()

Comando:

Codice: Seleziona tutto

python slicing2.py dummybase.txt > finale.txt
File di output: finale.txt

Codice: Seleziona tutto

56114.00	0.111556	0.388383	0.4251709
56115.00	0.112990	0.387793	0.4250471
56116.00	0.114407	0.387180	0.4248871
56117.00	0.115809	0.386545	0.4247509
56118.00	0.117194	0.385888	0.4246868
56119.00	0.118562	0.385209	0.4247279
56120.00	0.119912	0.384508	0.4248887
56121.00	0.121244	0.383787	0.4251683
56122.00	0.122558	0.383044	0.4255519
56123.00	0.123853	0.382281	0.4260083
56124.00	0.125129	0.381497	0.4264934
56125.00	0.126385	0.380694	0.4269541
56126.00	0.127621	0.379871	0.4273365
56127.00	0.128837	0.379029	0.4275968
56418.00	0.097643	0.394694	0.1343568
56419.00	0.099303	0.394607	0.1326124
56420.00	0.100966	0.394493	0.1310318
56421.00	0.102631	0.394352	0.1296020
56422.00	0.104297	0.394184	0.1284343
56423.00	0.105964	0.393989	0.1274611
56114.00	0.111556	0.388383	0.4251709
56115.00	0.112990	0.387793	0.4250471
56116.00	0.114407	0.387180	0.4248871
56117.00	0.115809	0.386545	0.4247509
56118.00	0.117194	0.385888	0.4246868
56119.00	0.118562	0.385209	0.4247279
56120.00	0.119912	0.384508	0.4248887
56121.00	0.121244	0.383787	0.4251683
56122.00	0.122558	0.383044	0.4255519
56123.00	0.123853	0.382281	0.4260083
56124.00	0.125129	0.381497	0.4264934
56125.00	0.126385	0.380694	0.4269541
56126.00	0.127621	0.379871	0.4273365
56127.00	0.128837	0.379029	0.4275968
56418.00	0.097643	0.394694	0.1343568
56419.00	0.099303	0.394607	0.1326124
56420.00	0.100966	0.394493	0.1310318
56421.00	0.102631	0.394352	0.1296020
56422.00	0.104297	0.394184	0.1284343
56423.00	0.105964	0.393989	0.1274611
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti