[Python] Comparare stringhe unicode
Gianni Di Noia
giannidn a gmail.com
Gio 13 Giu 2013 18:14:39 CEST
Scusate, ho questa funzione che uso per popolare il DB di articoli presi da
feed di vario tipo (atom, rss..) con l'aiuto di feedparser:
def check_feed(feedk, e=0):
feed = feedk.get()
parsed = fetch_feed(feed.feed)
if parsed:
try:
entry = parsed['items'][e]
while unicode(feed.last_id) != unicode(entry['link']):
scrivineldb()
e += 1
entry = parsed['items'][e]
feed.last_id = unicode(parsed['items'][0]['link'])
feed.put()
except:
pass
Oltre al try/except/pass che non mi piace ho un problema nel 'while' che ha
il compito di scrivineldb() finché non raggiunge l'ultimo articolo del
processo precendente (feed.last_id).
Il problema è che anche quando "feed.last_id" e "entry['link']" sono uguali
la funziona li identifica come diversi. Ho pensato che dipenda dalla
codifica - che non conosco abbastanza - ma non riesco a risolvere:
feed.last_id è una StringProperty di appengine che la documentazione dice
essere unicode. Lo uso come un cursore, salvando l'ultimo "item" in modo
che nel prossimo task la funzione si fermi quando lo raggiunge evitando
duplicati.
entry['link'] è anche una stringa unicode come dice la documentazione di
feedparser ed è l'oggeto che comparo col 'cursore'.
Entrambe sono degli url in unicode tipo: u'http://esempio.it/post/123'
La comparazione nel while dovrebbe funzionare anche senza esplicitare l'
unicode() ma niente continua a consumare risorse processando tutti gli
articoli nel feed.
idee..
-------------- parte successiva --------------
Un allegato HTML è stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20130613/4eca1747/attachment.html>
Maggiori informazioni sulla lista
Python