dictonary: object does not support item assignmen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
lobo
User
Beiträge: 29
Registriert: Sonntag 25. August 2002, 16:10
Wohnort: bei Augsburg

dictonary: object does not support item assignmen

Beitragvon lobo » Samstag 13. September 2003, 17:44

Hi!

Ich bin gerade dabei ein Programm zu schreiben, welches Daten aus einer RDF Datei holt.

An dieser Stelle

Code: Alles auswählen

if rgx_title.match(l):
                res = rgx_title.match(l)
                n["title"] = res.group(1)

bekomme ich immer eine Fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "./urp", line 25, in ?
    n["title"] = res.group(1)
TypeError: object does not support item assignment

Warum kann ich nicht dem Key "title" im Dictionary n einfach einen Wert übergeben? In meinem Buch "Python gepackt", ist es auch so erklärt.

Code: Alles auswählen

#!/usr/bin/python

import sys, re, urllib

rgx_title_u = '<title>(.*)</title>'
rgx_link_u = '<link>(.*)</link>'
rgx_desc_u = '<description>(.*)</link>'
rgx_url_u = '<url>(.*)</url>'

rgx_title = re.compile(rgx_title_u)
rgx_link = re.compile(rgx_link_u)
rgx_desc = re.compile(rgx_desc_u)
rgx_url = re.compile(rgx_url_u)

url = urllib.urlopen("symlinkch.rdf")

for l in url.readlines():
        l = l.strip()
        if l == "<channel>": n = {}
        elif l == "</channel>":
                n = None

        if rgx_title.match(l):
                res = rgx_title.match(l)
                n["title"] = res.group(1)
        elif rgx_link.match(l):
                res = rgx_link.match(l)
                n["link"] = res.group(1)
        elif rgx_desc.match(l):
                res = rgx_desc.match(l)
                n["desc"] = res.group(1)
        elif rgx_url.match(l):
                res = rgx_url.match(l)
                n["url"] = res.group(1)

url.close()


Gruss

Jochen
xturbo77
User
Beiträge: 39
Registriert: Montag 9. September 2002, 20:05
Kontaktdaten:

Beitragvon xturbo77 » Samstag 13. September 2003, 19:38

Ganz einfach, n ist in deinem Fall kein Dictionary oder ein Dictionary ähnliches Objekt.
Versuch anstatt n = None mal folgendes:

Code: Alles auswählen

n = {}
n["title"] = "wert"
lobo
User
Beiträge: 29
Registriert: Sonntag 25. August 2002, 16:10
Wohnort: bei Augsburg

Beitragvon lobo » Samstag 13. September 2003, 21:43

Danke für die schnelle Antwort!

Oh mann, ich glaube da war ich nicht ganz bei der Sache :oops:

Gruss

Jochen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder