Pyton-newbie hat Problem mit regulären Ausdrücken

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.
timo_81
User
Beiträge: 23
Registriert: Dienstag 11. März 2008, 18:08

Pyton-newbie hat Problem mit regulären Ausdrücken

Beitragvon timo_81 » Dienstag 11. März 2008, 18:27

Hi Leute,

ich bin neu was Python angeht und versuche gerade mit regulären Ausdrücken Daten aus dem öffentlich zugänglichen Handedict (Chinesich-Deutsch Wörterbuch zu extrahieren)


Die Einträge sind wie folgt aufgebaut:

ChinesischeZeichen [wo shi de guo] / dt.Übersetzung

nun möchte ich gerne alle geklammerten Ausdrücke zum testen in eine eigene Datei schreiben.

Hier ist mein Code:


[code=]
#!/usr/bin/env python
# encoding: utf-8
from re import search, sub

from sys import argv
pfad="./handedict.u8"
datei = open( pfad, 'r' ).readlines() #zeilenweise
for zeilen in datei:
pinyin = search(r'\[(.*)\]', zeilen) #pinyin extrahieren
pinyin = pinyin.groups()[0]
print pinyin
open( datei + '.pinyin', 'w' ).writelines(pinyin)


Leider kommt immer die Fehlermeldung:

Traceback (most recent call last):
File "dict.py", line 21, in <module>
pinyin = pinyin.groups()[0]
AttributeError: 'NoneType' object has no attribute 'groups'


Hat jemand eine Idee?
MfG
Timo[/code]
meneliel
User
Beiträge: 256
Registriert: Montag 25. Juni 2007, 08:35
Kontaktdaten:

Beitragvon meneliel » Dienstag 11. März 2008, 18:48

Also sieht für mich so aus, als würde einfach keine "passende" Zeichenkette gefunden, pinyin ist also None.

EDIT:

bin mir nicht sicher, ob das so überhaupt funktioniert funktioniert. Probier mal. ich würde auch das r vor dem String wegnehmen.

Code: Alles auswählen


regex = re.compile('\[(.*)\]')
for zeile in datei:
    pinyin = regex.search(zeile).groups()
    .....



wenn ich falsch liege bitte korrigeren. Weil hab selber so meine probleme mit reg.ex. und so ... ^^
Benutzeravatar
Hyperion
Moderator
Beiträge: 7472
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Beitragvon Hyperion » Dienstag 11. März 2008, 19:09

Wie immer bei regexps empfehle ich das Tool Kodos zum probieren und experimentieren!

Desweiteren sollte man nach einem "search" erst einmal prüfen, ob überhaupt ein Treffer vorliegt oder eben einen try-catch Block drum herum basteln!

Wer ist online?

Mitglieder in diesem Forum: jan.b