Gå til innhold

Anbefalte innlegg

Heisann, holder på å lage meg noen python-xchat scripts, men har kommet over en unicodefeil som jeg ikke får vekk. Stringen må være i unicode, ettersom jeg bruker googleapien. søkestrengen blir henta fra msg.strip().split(' ')[1:].

 

 

 try:
       asks = ''.join([x for x in msg.strip().split(' ')[1:]])
       query = unicode(asks, 'latin-1')
   except Exception, e:
       channelWrite('google search kommando uten en søkestring detektert!')
       print 'Feil skjedde:\n\n%s\nqueryet: %s\n' % (e, asks)
   else:    
       import SOAPpy as SOAP
      #...

koden funker, men jeg får denne feilen om søkestrengen inneholder æ,ø eller å. Hvordan skal jeg fikse dette?

google search kommando uten en søkestring detektert!

Feil skjedde:

 

'ascii' codec can't decode byte 0xc3 in position 2: ordinal not in range(128)

queryet: ssæ

Endret av dabear
Lenke til kommentar
  • 2 uker senere...
Videoannonse
Annonse

Heisann, ingen som kan hjelpe? Det viser seg at det er konverteringa til utf-8 som er problemet.

asks = ' '.join([x for x in msg.strip().split(' ')[1:]]).encode('utf-8')

Dersom msg inneholder ø,æ eller å, får jeg altså feilen «'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)

queryet»

Lenke til kommentar

Sliter veldig mykje med det same.

SOAPpy har ein klasse som heiter Types.py, i return til

def _marshalData(self)

return str(self._data)

 

viss du setter det til unicode istandefor str så skal den takle det bedre.

problemet for meg er at den omsetter ein norsk Å til to andre tegn og soap-kallet går i dass likevel.

Lenke til kommentar

Heisann, løste det på følgende måte:

def google(msg):

   asks  = ''

   query = ''

   msg = msg.decode('utf-8')

   try:

       asks = u' '.join([x for x in msg.strip().split(' ')[1:]] )

       query = asks

   except Exception, e:

       channelWrite('google search kommando uten en søkestring detektert!')

       print 'Feil skjedde:\n\n%s\nqueryet: %s\n' % (e, asks)

   else:    

       import SOAPpy as SOAP

       #-t-o-d-o-: detect define: & similar = no url & throws exception

       google = SOAP.SOAPProxy('http://api.google.com/search/beta2', namespace='urn:GoogleSearch')

       #this one is mine, please change..

       googleKey = u'KJcb8flQFHKQ9R12mI0KLJSYkb6vk1i5'

       try:

           results = google.doGoogleSearch(googleKey, query, 0, 10,\

           SOAP.booleanType(0), u'', SOAP.booleanType(0), u'', u'', u'')

       except:

           #couldn't do query

           channelWrite('Kunne ikke gjennomføre googlesøk, prøv igjen seinere')

           return
       try:    

           totalResults = str(results.estimatedTotalResultsCount)

           time        = results.searchTime

           firstURL    = results.resultElements[0].URL 

           # print first result and number of matches

           reply = u'Googlesøket etter %s ga %s resutat. Første link er %s' % (query,

                                                                        totalResults, firstURL)

       except:
           reply = u'Kunne ikke søke etter %s, ikke et gyldig søk' % query
       reply = reply.encode("utf-8")

       channelWrite(reply)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...