Repository 32bit  Forum
Repository 64bit  Wiki

python unicode e me stesso: tre maledizioni

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata e la versione del Kernel. Questi dati aiutano le persone che possono rispondere.
2) Specificare sempre il tipo di shell (bash, sh, csh, etc...)
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza dell'ultima regola porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

python unicode e me stesso: tre maledizioni

Messaggioda venerdi_12 » gio feb 24, 2011 12:17

Scusate ragazzi,
mi aiutate ad uscire da questa cosa?
Allego un frammento di codice che
-si collega alla pagina del fatto quotidiano contenente i links agli articoli del giornale odierno (in realtà quello di due giorni fa ma è uguale)
-fa delle sostituzioni per correggere errori nell'html
-scrive i link che mi interessano in una lista
Codice: Seleziona tutto
import mechanize, codecs, re, string, os,
from BeautifulSoup import BeautifulSoup, NavigableString
from re import findall

links = []

BASE_URL = (u'http://www.ilfattoquotidiano.it/giornale-cartaceo/?g=22-02-2011')

br = mechanize.Browser()
datalinks = br.open(BASE_URL).get_data()
datalinks = re.sub("scr\'\+\'ipt", "script", datalinks)
datalinks = re.sub('</script<', '</script><', datalinks)
datalinks = re.sub(u'\xe8','e\'',datalinks)

souplinks = BeautifulSoup(datalinks)
for anchor in souplinks.findAll('a',href=re.compile('www.ilfattoquotidiano.it/2011/02/22')):
    links.append(anchor['href'])


Guardiamo ad esempio
Codice: Seleziona tutto
links[5]

il risultato è

u'http://www.ilfattoquotidiano.it/2011/02/22/%e2%80%9caltro-che-diplomazia-le-tribu-lo-cacceranno%e2%80%9d/93288/?nocache'

ovviamente se passo questo link al browser di mechanize
Codice: Seleziona tutto
data = br.open(links[5]).get_data()

l'errore è:
KeyError: u'\xe2'

Il link corretto è
[url]http://www.ilfattoquotidiano.it/2011/02/22/“altro-che-diplomazia-le-tribu-lo-cacceranno”/?nocache[/url]

Sti maledetti apici, ma anche altri caratteri speciali, fanno un casino pazzesco e sul sito del fatto ne usano a iosa.

Mi date una mano ad uscirne? Grazi
Avatar utente
venerdi_12
Packager
Packager
 
Messaggi: 258
Iscritto il: sab lug 09, 2005 0:00
Località: Lusciano (Ce)
Nome Cognome: Luciano Fattore
Kernel: 3.0
Desktop: kde-4.7.0
Distribuzione: archlinux

Re: python unicode e me stesso: tre maledizioni

Messaggioda odiusseus » gio feb 24, 2011 20:33

ciao se le hai copiato da una parte all'altra il link...riscrivi da capo solo quei simboli. A me basta fare così...oppure apri con l'editor di testo di kde (kwrite) che mette al momento del salvataggio del file con estensione .py l'indicazione a python per i caratteri unicode..o una cosa simile..
Codice: Seleziona tutto
#!/usr/bin/env python
# -*- coding: utf-8 -*-

ciao
odiusseus
Linux 2.4
Linux 2.4
 
Messaggi: 352
Iscritto il: sab giu 30, 2007 14:09
Località: roma/vibo valentia
Slackware: 13.0
Kernel: 2.6.32.2
Desktop: kde


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti