Ich hab folgendes Problem:
Ich habe eine Access Datenbank die ich mit Python durchsuchen muss. Es gibt eine Spalte namens InfoText und eine Spalte namens InfoNr. Jeder InfoText bezieht sich auf eine InfoNr. So ist die InfoNr 13 z.b. InfoText "Schmelzen_ct1"
Jetzt muss ich mit Python diese Spalten durchsuchen und herausfinden ob der InfoText zu der InfoNr passt. Wenn jetzt jemand z.B. den InfoText falsch geschrieben hat ( "Shcmelzen_ct1" ) soll python eine Warnung ausgeben und den Schreibfehler korrigieren. Sollte allerdings der Text total unterschiedlich sein, also z.b. "Löten_ct2" soll eine Errormassage kommen und der Fehler nicht korrigiert werden.
Jetzt geht es mir aber vorerst nur um den Vergleich zweier Texte. Sagen wir einfach mal 2 strings. 2 strings werden von Tastatur eingelesen und sollte sich String 2 von String 1 nur in einem oder 2 Buchstaben unterscheiden soll String 1 überschrieben werden, wenn es mehr Unterschiede gibt sollen beide beibehalten werden und eine Nachricht ausgegeben werden. Wie geh ich das am besten an?
danke im Vorraus
Anfänger braucht Hilfe - Texte auf Ähnlichkeit überprüfen
Hallo stigi,
http://de.wikipedia.org/wiki/Normalisie ... tenbank%29
Schlechtes Datenbankdesign! Sagt Dir der Begriff 'Normalisierung' etwas?stigi hat geschrieben:Es gibt eine Spalte namens InfoText und eine Spalte namens InfoNr. Jeder InfoText bezieht sich auf eine InfoNr. So ist die InfoNr 13 z.b. InfoText "Schmelzen_ct1"
http://de.wikipedia.org/wiki/Normalisie ... tenbank%29
Obwohl Du mit der zweiten Normalform (siehe Link oben) das Problem wohl gar nicht hättest: such mal nach "Levenshtein".stigi hat geschrieben:Jetzt geht es mir aber vorerst nur um den Vergleich zweier Texte. Sagen wir einfach mal 2 strings. 2 strings werden von Tastatur eingelesen und sollte sich String 2 von String 1 nur in einem oder 2 Buchstaben unterscheiden soll String 1 überschrieben werden, wenn es mehr Unterschiede gibt sollen beide beibehalten werden und eine Nachricht ausgegeben werden. Wie geh ich das am besten an?
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
@modelnine: Interessant, dass ich für meinen Beitrag eine Minute gebraucht hab und Du für Deinen 10 Minuten.
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Normalisierung sagt mir leider nichts, die Datenbank ist auch nicht von mir, das was ich geschrieben hatte war nur ein Beispiel und entspricht nicht dem orginial welches ich zu bearbeiten habe. Das haben andere Leute geschrieben und ich denk mal das die davon mehr Ahnung haben als ich die wollen nur das ich ne "schwierigere" aufgabe habe um mich besser in python einzulernen.
kann mir jemand ein anwendungsbeispiel geben zu dem ersten link ?
kann mir jemand ein anwendungsbeispiel geben zu dem ersten link ?
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Das Modul aus:
http://svn.modelnine.org/svn/levenshtein
auschecken, dann kompilieren, installieren (siehe den Link, für Geschwindigkeit mit -O3 kompilieren wie's da steht), und ausprobieren:
Der Levenshtein-Algorithmus gibt eine Distanz zurück, die die Ähnlichkeit zwischen zwei Strings ausdrückt. Je kleiner die Distanz, desto ähnlicher sind sie. Für eine genauere Beschreibung was der Algorithmus macht und was er zurückliefert, siehe (z.B.) Wikipedia.
Vielleicht solltest Du die beiden Strings vorher noch "normalisieren," bevor Du sie durch Levenshtein durchjagst, da Groß-/Kleinschreibung als unterschiedliche Werte angesehen werden, bei manchen RDBMs aber als Spalten-/Tabellenname dieses eben irrelevant ist.
http://svn.modelnine.org/svn/levenshtein
auschecken, dann kompilieren, installieren (siehe den Link, für Geschwindigkeit mit -O3 kompilieren wie's da steht), und ausprobieren:
Code: Alles auswählen
print levenshtein.levenshtein("test","temp")
Vielleicht solltest Du die beiden Strings vorher noch "normalisieren," bevor Du sie durch Levenshtein durchjagst, da Groß-/Kleinschreibung als unterschiedliche Werte angesehen werden, bei manchen RDBMs aber als Spalten-/Tabellenname dieses eben irrelevant ist.
--- Heiko.
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
PS: Wenn's Dir nicht um Geschwindigkeit geht kannst Du den Levenshtein-Algorithmus natürlich auch in Python implementieren (oder nach einer Implementierung suchen), dann hast Du keine äußeren Abhängigkeiten.
--- Heiko.
hab das jetzt mal versucht, sicherlich komplett falsch, deswegen gehts auch net ;P
folgender fehler kommt in der commandline
Y:\Mitarbeiter\mustermapa\pythonwin>setup.py -vv -s "import levenshtein" \ "lev
enshtein.levenshtein(\"hello\",\"heike\")"
File "Y:\Mitarbeiter\mustermapa\pythonwin\setup.py", line 1
from distutils.core import setup Extension
^
folgender fehler kommt in der commandline
Y:\Mitarbeiter\mustermapa\pythonwin>setup.py -vv -s "import levenshtein" \ "lev
enshtein.levenshtein(\"hello\",\"heike\")"
File "Y:\Mitarbeiter\mustermapa\pythonwin\setup.py", line 1
from distutils.core import setup Extension
^
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Ich versteh nicht ganz was Du da machst... Hast Du einen C-Compiler installiert? Wenn ja, dann solltest Du über distutils die Erweiterung installieren können, wenn nein, dann nicht. Dann mußt Du, wie ich in meinem letzten Beitrag sagte, entweder den Levenshtein-Algorithmus in purem Python suchen (auch nicht weiter schwer, siehe zum Beispiel Google), oder aber ihn selbst implementieren (genausowenig schwer, siehe zum Beispiel Wikipedia für eine Beschreibung des Algorithmus), auch in Pure-Python.
--- Heiko.
Das automatische korrigieren würde ich lassen. Man sollte Nutzer gar nicht erst daran gewöhnen, das "kleine" Fehler durchgehen. Dann sehen die keine Veranlassung ihre Eingabe zu Korrigieren. Warnungen werden gerne ignoriert wenn das richtige Ergebnis am Ende herauskommt.stigi hat geschrieben:Jetzt muss ich mit Python diese Spalten durchsuchen und herausfinden ob der InfoText zu der InfoNr passt. Wenn jetzt jemand z.B. den InfoText falsch geschrieben hat ( "Shcmelzen_ct1" ) soll python eine Warnung ausgeben und den Schreibfehler korrigieren. Sollte allerdings der Text total unterschiedlich sein, also z.b. "Löten_ct2" soll eine Errormassage kommen und der Fehler nicht korrigiert werden.
Ausserdem musst Du natürlich aufpassen, dass Du nichts "falsch" korrigierst.
das programm soll nicht parallel zur eingabe laufen. die user schreiben tagsüber ihre daten in die access tabelle und über nacht läuft das python programm drüber, korrigiert wenn nötig und gibt eine logfile dazu aus. die user selbst bekommen davon nichts mit
Die zeitliche Verschiebung ändert überhaupt nichts an der von BlackJack angesprochenen Problematik.stigi hat geschrieben:das programm soll nicht parallel zur eingabe laufen.
Eben. Wie gesagt: sauber normalisieren und das Problem mit falschen Schlüsseln tritt erst gar nicht auf.stigi hat geschrieben:die user selbst bekommen davon nichts mit
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
ich hab mir jetzt diese file
http://trific.ath.cx/Ftp//python/levens ... 0.1.tar.gz
runtergeladen, ich weiß leider trotzdem nicht wie ich sie verwenden soll
http://trific.ath.cx/Ftp//python/levens ... 0.1.tar.gz
runtergeladen, ich weiß leider trotzdem nicht wie ich sie verwenden soll
OT: Interessanterweise bekomme ich da auch den transformation_error. Hab's aber gerade nochmal bei sourceforge getestet. Dort kann ich tar.gz-Dateien problemlos runterladen.
Was mir bei dieser URL grad auffällt ist der Doppelslash nach "Ftp"...
Es gibt für alles eine rationale Erklärung.
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
Außerdem gibt es eine irrationale.
Wie man Fragen richtig stellt
ich hab die file runtergeladen, aber wie importiere ich die jetzt in mein pythonwin ?
immer wenn ich schreib:
>>> from Levenshtein import *
kommt:
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
ImportError: No module named Levenshtein
wo muss ich diese file hinkopieren, bzw hinextrahieren ? muss ich dann noch was mit den files da drin machen ?!
immer wenn ich schreib:
>>> from Levenshtein import *
kommt:
Traceback (most recent call last):
File "<interactive input>", line 1, in ?
ImportError: No module named Levenshtein
wo muss ich diese file hinkopieren, bzw hinextrahieren ? muss ich dann noch was mit den files da drin machen ?!
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Wie wärs mit:
*Trommelwirbel*
Python-Doku lesen?
Tschuldigung, diese Frage ist wirklich zur genüge überall (nicht nur hier im Forum) wieder und wieder beantwortet worden, und steht auch an vielen Stellen in der Python-Doku. Wenn Du nicht die Eigeninitiative besitzt Dich mal mit der Programmiersprache in der Du programmierst und Ihrer Umgebung auseinanderzusetzen, dann weiß ich nicht wie wir Dir helfen sollen...
*Trommelwirbel*
Python-Doku lesen?
Tschuldigung, diese Frage ist wirklich zur genüge überall (nicht nur hier im Forum) wieder und wieder beantwortet worden, und steht auch an vielen Stellen in der Python-Doku. Wenn Du nicht die Eigeninitiative besitzt Dich mal mit der Programmiersprache in der Du programmierst und Ihrer Umgebung auseinanderzusetzen, dann weiß ich nicht wie wir Dir helfen sollen...
--- Heiko.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Das ist ein Fall für die Supernanny.. ähm, nein, fascher Text.. Nochmal: Das ist ein Fall für [wiki]Modul Import[/wiki]! Wunderbar, diesmal hats geklapptmodelnine hat geschrieben:Python-Doku lesen?
An alle die es nicht verstehen: einfach ignorieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ich habs jetzt echt versucht und ich hab mich mit dem krusch auch auseinander gesetzt aber ich bekomms einfach nicht hin!
ich hab jetzt die 3 files von modelnine. levenshtein.c setup.py und runtest.txt.
wohin mit den dingern und was machen??? und bitte nich wieder fachchinesisch wie "auschecken, implementieren..." damit kann ich als anfänger nichts anfangen
ich hab jetzt die 3 files von modelnine. levenshtein.c setup.py und runtest.txt.
wohin mit den dingern und was machen??? und bitte nich wieder fachchinesisch wie "auschecken, implementieren..." damit kann ich als anfänger nichts anfangen
Du tippst einfach, wenn du dich im selben Verzeichnis befindeststigi hat geschrieben:ich hab jetzt die 3 files von modelnine. levenshtein.c setup.py und runtest.txt.
wohin mit den dingern und was machen??? und bitte nich wieder fachchinesisch wie "auschecken, implementieren..." damit kann ich als anfänger nichts anfangen
Code: Alles auswählen
python setup.py install
Allerdings solltest du einen C-Compiler besitzen, da levenshtein.c, wie die Endung schon sagt, eine C Datei ist.