Domanda

Sto utilizzando la Shell Python in questo modo:

>>> s = 'Ã'
>>> s
'\xc3'

Come variabile I stampare s per mostrare l'un personaggio ??? Questo è il primo e più semplice domanda. Davvero, sto ottenendo il contenuto di una pagina web che ha i caratteri non ASCII, come il precedente, e gli altri con tilde come A, E, I, N, ecc Inoltre, sto cercando di eseguire un espressione regolare con questi personaggi nel espressione modello contro il contenuto della pagina web.

Come si può risolvere questo problema ??

Questo è un esempio di un'espressione regolare:

u'<td[^>]*>\s*Definición\s*</td><td class="value"[^>]*>\s*(?P<data>[\w ,-:\.\(\)]+)\s*</td>'

Se uso Expresson applicazione funziona bene.

EDIT [2009/05/26 16:38]: Siamo spiacenti, circa la mia spiegazione. Cercherò di spiegare meglio.

Devo ottenere qualche testo da una pagina. Ho l'URL di quella pagina e ho la regex per ottenere che il testo. La prima cosa che ho pensato è stata la regex era sbagliato. Ho controllato con Expresso e funziona bene, ho ricevuto il testo che volevo. Così, la seconda cosa che ho pensato è stato quello di stampare il contenuto della pagina e che è stato quando ho visto che il contenuto non era quello che vedo nel codice sorgente della pagina web. Le differenze sono i caratteri non ASCII come un, e, i, ecc Ora, io non so che cosa devo fare e se il problema è nella codifica del contenuto della pagina o nel testo modello del regex. Una delle espressioni regolari che ho definito è quello precedente.

La domanda wolud essere: non v'è alcun problema utilizzando regex quale testo modello ha i caratteri non ASCII ???

È stato utile?

Soluzione

Si supponga di voler stampare come UTF-8. Prima di Python 3, il migliore è quello di codificare in particolare si

print u'Ã'.encode('utf-8')

se si ottiene il testo esternamente poi si deve decodificare specifico ( 'utf-8) come

f = open(my_file)
a = f.next().decode('utf-8') # you have a unicode line in a
print a.encode('utf-8') 

Altri suggerimenti

Come faccio a stampare s variabile per mostrare il carattere A ???
uso print:

>>> s = 'Ã'
>>> s
'\xc3'
>>> print s
Ã

Vorrei usare ord() per scoprire se un personaggio è ASCII / speciali:

if ord(c) > 127:
    # special character

Questo probabilmente non funzionerà con codifiche multibyte, come UTF-8. In questo caso, vorrei convertire in Unicode prima del test.

Se si ottiene i caratteri speciali da una pagina web, si dovrebbe sapere la codifica. Poi decodificarlo, vedi Unicode HOWTO .

Edit: io non sono assolutamente sicuro di quello che questa domanda è di circa ... Può essere una buona idea per chiarire che

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top