[Tutor] Unicode

Øyvind Dale Spørck oyvind.sporck at eniro.no
Tue Sep 23 12:43:02 EDT 2003


Hello,

   I have been making a little program that goes onto the net and picks down
some information. The program has to put some adresses together to find the
adress that it is going to look for. It works great if I use only english
letters. However, I need to use a few non-english letters,  æøå. Python
seems to change the adress to unicode, even thought I make sure that all the
variables are in string format. 

   In the error the letter ø gets translated into \xf8. The correct adress
is
http://www.kvasir.no/cgi-bin/search.cgi?what=bransje&q=agreement.level%3A204
+S%F8keord&loc= where the ø gets translated into %F8. How can I get the
program to translate the ø to %F8 and to run the adress without the Unicode
error?

Thanks in advance,
Øyvind


The error:

Traceback (most recent call last):
  File
"C:\Python22\Lib\site-packages\Pythonwin\pywin\framework\scriptutils.py",
line 301, in RunScript
    exec codeObject in __main__.__dict__
  File "C:\Documents and Settings\oyvind.sporck\My
Documents\Python\agreement_level_excel4.py", line 147, in ?
    n.lastned()
  File "C:\Documents and Settings\oyvind.sporck\My
Documents\Python\agreement_level_excel4.py", line 55, in lastned
    definisjoner.res4 = urlopen(definisjoner.level4)
  File "C:\Python22\lib\urllib.py", line 73, in urlopen
    return _urlopener.open(url)
  File "C:\Python22\lib\urllib.py", line 151, in open
    fullurl = unwrap(toBytes(fullurl))
  File "C:\Python22\lib\urllib.py", line 913, in toBytes
    raise UnicodeError("URL " + repr(url) +
UnicodeError: URL
u'http://www.kvasir.no/cgi-bin/search.cgi?what=bransje&q=agreement.level%3A2
04+S\xf8keord&loc=&Submit=S%F8k' contains non-ASCII characters

The program:

from win32com.client import Dispatch
from urllib import urlopen
import re
from sys import exit

class definisjoner:
    xlApp = Dispatch("Excel.Application")
    xlApp.visible = 1
    xlApp.Workbooks.Open(Filename='C:\\Documents and
Settings\oyvind.sporck\My Documents\Agreementliste.xls')
    xlBook = xlApp.Workbooks(1)
    xlSheet = xlApp.Sheets(1)
    level4 =''
    level5 =''
    level6 =''
    level7 =''
    level8 =''
    res4 = ''
    res5 = ''
    res6 = ''
    res7 = ''
    res8 = ''
    bransje = ''
    forst =
"http://www.kvasir.no/cgi-bin/search.cgi?what=bransje&q=agreement.level%3A"
    midten = "+"
    slutten = "&loc=&Submit=S%F8k"
    linje_standard = ''
    linje_pluss = ''
    linje_bilde = ''
    linje_slide = ''
    linje_slidepluss = ''
    xlrad = 2
    xlkolonne = 1

    def __init__(self):
        pass

    def spor(self):
        definisjoner.bransje =
definisjoner.xlSheet.Cells(definisjoner.xlrad, definisjoner.xlkolonne).Value
        print(type(definisjoner.bransje))
        print definisjoner.bransje
        print definisjoner.bransje
        #definisjoner.bransje = str(definisjoner.bransje)
        print definisjoner.bransje
        definisjoner.bransje
        if definisjoner.bransje == '':
            sys.exit()
        definisjoner.level4 = definisjoner.forst + "204" +
definisjoner.midten + definisjoner.bransje + definisjoner.slutten
        definisjoner.level5 = definisjoner.forst + "205" +
definisjoner.midten + definisjoner.bransje + definisjoner.slutten
        definisjoner.level6 = definisjoner.forst + "206" +
definisjoner.midten + definisjoner.bransje + definisjoner.slutten
        definisjoner.level7 = definisjoner.forst + "207" +
definisjoner.midten + definisjoner.bransje + definisjoner.slutten
        definisjoner.level8 = definisjoner.forst + "208" +
definisjoner.midten + definisjoner.bransje + definisjoner.slutten
        print definisjoner.bransje

    def lastned(self):    
        definisjoner.res4 = urlopen(definisjoner.level4)
        definisjoner.res5 = urlopen(definisjoner.level5)
        definisjoner.res6 = urlopen(definisjoner.level6)
        definisjoner.res7 = urlopen(definisjoner.level7)
        definisjoner.res8 = urlopen(definisjoner.level8)

    def finn(self):
        i = 1
        print "Bransje"
        print definisjoner.bransje
        while definisjoner.res4.readline() != '<TD BGCOLOR="#DDDDDD"><FONT
SIZE=2 face="Verdana,Arial,Geneva">\n':
            i = i + 1
            if i > 1000:
                break
        m = definisjoner.res4.readline()
        print m
        definisjoner.linje_standard = re.search('(?<=<b>)[0-9][0-9][0-9]',
m) or re.search('(?<=<b>)[0-9][0-9]', m) or re.search('(?<=<b>)[0-9]', m)
        i = 1
        while definisjoner.res5.readline() != '<TD BGCOLOR="#DDDDDD"><FONT
SIZE=2 face="Verdana,Arial,Geneva">\n':
            i = i + 1
            if i > 1000:
                break
        m = definisjoner.res5.readline()
        print m
        definisjoner.linje_pluss = re.search('(?<=<b>)[0-9][0-9][0-9]', m)
or re.search('(?<=<b>)[0-9][0-9]', m) or re.search('(?<=<b>)[0-9]', m)
        i = 1
        while definisjoner.res6.readline() != '<TD BGCOLOR="#DDDDDD"><FONT
SIZE=2 face="Verdana,Arial,Geneva">\n':
            i = i + 1
            if i > 1000:
                break
        m = definisjoner.res6.readline()
        print m
        definisjoner.linje_bilde = re.search('(?<=<b>)[0-9][0-9][0-9]', m)
or re.search('(?<=<b>)[0-9][0-9]', m) or re.search('(?<=<b>)[0-9]', m)
        i = 1
        while definisjoner.res7.readline() != '<TD BGCOLOR="#DDDDDD"><FONT
SIZE=2 face="Verdana,Arial,Geneva">\n':
            i = i + 1
            if i > 1000:
                break
        m = definisjoner.res7.readline()
        print m
        definisjoner.linje_slide = re.search('(?<=<b>)[0-9][0-9][0-9]', m)
or re.search('(?<=<b>)[0-9][0-9]', m) or re.search('(?<=<b>)[0-9]', m)
        i = 1
        while definisjoner.res8.readline() != '<TD BGCOLOR="#DDDDDD"><FONT
SIZE=2 face="Verdana,Arial,Geneva">\n':
            i = i + 1
            if i > 1000:
                break
        m = definisjoner.res8.readline()
        print m
        definisjoner.linje_slidepluss = re.search('(?<=<b>)[0-9][0-9][0-9]',
m) or re.search('(?<=<b>)[0-9][0-9]', m) or re.search('(?<=<b>)[0-9]', m)

    def plukkut(self):
        if definisjoner.linje_standard == None:
            definisjoner.linje_standard = 0
        else:
            definisjoner.linje_standard =
int(definisjoner.linje_standard.group())
        if definisjoner.linje_pluss == None:
            definisjoner.linje_pluss = 0
        else:
            definisjoner.linje_pluss = int(definisjoner.linje_pluss.group())
        if definisjoner.linje_bilde == None:
            definisjoner.linje_bilde = 0
        else:
            definisjoner.linje_bilde = int(definisjoner.linje_bilde.group())
        if definisjoner.linje_slide == None:
            definisjoner.linje_slide == 0
        else:
            definisjoner.linje_slide = int(definisjoner.linje_slide.group())
        if definisjoner.linje_slidepluss == None:
            definisjoner.linje_slidepluss == 0
        else:
            definisjoner.linje_slidepluss =
int(definisjoner.linje_slidepluss.group())


    def settinn(self):
        
        definisjoner.xlkolonne = definisjoner.xlkolonne + 1
        definisjoner.xlSheet.Cells(definisjoner.xlrad,
definisjoner.xlkolonne).Value = definisjoner.linje_standard
        definisjoner.xlkolonne = definisjoner.xlkolonne + 1
        definisjoner.xlSheet.Cells(definisjoner.xlrad,
definisjoner.xlkolonne).Value = definisjoner.linje_pluss
        definisjoner.xlkolonne = definisjoner.xlkolonne + 1
        definisjoner.xlSheet.Cells(definisjoner.xlrad,
definisjoner.xlkolonne).Value = definisjoner.linje_bilde
        definisjoner.xlkolonne = definisjoner.xlkolonne + 1
        definisjoner.xlSheet.Cells(definisjoner.xlrad,
definisjoner.xlkolonne).Value = definisjoner.linje_slide
        definisjoner.xlkolonne = definisjoner.xlkolonne + 1
        definisjoner.xlSheet.Cells(definisjoner.xlrad,
definisjoner.xlkolonne).Value = definisjoner.linje_slidepluss
        definisjoner.xlkolonne = 1
        definisjoner.xlrad = definisjoner.xlrad + 1

if __name__ == "__main__":
    n = definisjoner()
    while 1 == 1:
        n.spor()
        n.lastned()
        n.finn()
        n.plukkut()
        n.settinn() 



More information about the Tutor mailing list