Seite 1 von 1

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

Verfasst: Dienstag 11. März 2008, 18:27
von timo_81
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: Alles auswählen

#!/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

Verfasst: Dienstag 11. März 2008, 18:48
von meneliel
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 ... ^^

Verfasst: Dienstag 11. März 2008, 19:09
von Hyperion
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!