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.
Antworten
lobo
User
Beiträge: 29
Registriert: Sonntag 25. August 2002, 16:10
Wohnort: bei Augsburg

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
Jabber: lobo@jabber.ccc.de
[url=http://www.c3a.de/]chaostreff augsburg[/url]
xturbo77
User
Beiträge: 39
Registriert: Montag 9. September 2002, 20:05
Kontaktdaten:

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

Danke für die schnelle Antwort!

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

Gruss

Jochen
Jabber: lobo@jabber.ccc.de
[url=http://www.c3a.de/]chaostreff augsburg[/url]
Antworten