String suchen???

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.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Sonntag 23. November 2008, 14:33

Hallo

Ich dachte das Problem lasse ich erst noch ruhen, jetzt plagt es mich aber schon seit fast einer Woche.

Da dies meiner meinugn nach nicht viel mit Tkinter zu tuhen hat schreibe ich es mal hier rein.

Ich schreibe ja gerade einen Editor für Python mit Syntaxhighlithing.

Mein Problem ist das ich die Stings gerne einfärben möchte.
Wenn man immer alles schön braf macht und nicht kompliziertes schreibt ist das ja recht einfach z.B. print "hallo"

jetzt habe ich das Problem das es ja unzählige kombinationen gibt z.B:

Code: Alles auswählen

print "Hallo" + ' du'
print "hallo ' du"
print "f ' f ' f "
ich mache das bis jetzt mit re.findall(), das ich das nicht so lassen kann ist mir klar.

hier mal der code:
http://paste.pocoo.org/show/92221/

Ich muss wie schon an andere Stelle angesprochen den Syntax erkennen um sinnvoll arbeiten zu können.

Wie würdet ihr sowas lösen?
(Muss kein fertiger code sein(währe zwar nicht schlecht) es reicht hoffentlich wenn ihr mir eine Sinnvolle Methode zeigen würdet)

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 23. November 2008, 14:49

Dazu benutzt man Lexer, siehe etwa den Python Lexer aus Pygments. Dieser entscheidet, was der vorliegende String so enthält und man kann dann die entsprechenden Tokens einfärben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Sonntag 23. November 2008, 14:59

Hallo

Danke für die Schnelle Antwort ich hätte schreiben sollen das ich soetwas eigentlich nicht nehmen will.

Der Weg ist doch das Ziel, heist es doch so schön

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 23. November 2008, 15:34

Andyh hat geschrieben:Danke für die Schnelle Antwort ich hätte schreiben sollen das ich soetwas eigentlich nicht nehmen will.
Dennoch nutzt man für soetwas Lexer, also wenn du das Highlighting richtig machen willst, nimmst du entweder den Pygments-Lexer oder du schreibst selbst einen.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Sonntag 23. November 2008, 15:45

Hallo

Gut verstanden CHEF!

Läuft Pygments auch unter WIN?

Ich habe es bis jetzt noch nicht zum laufen gebracht.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Sonntag 23. November 2008, 16:36

Pygments ist unabhängig vom verwendeten Betriebssystem. Wie hast du denn bisher versucht, es zu installieren? Hast du dir die Installationsanleitung angeguckt? Unter Windows würde ich [wiki=Easy_Install]easy_install[/wiki] nehmen, ist da die einfachste Variante.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Sonntag 23. November 2008, 16:41

Hallo

hat geklapt nach einen Neustart.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Sonntag 23. November 2008, 18:09

Hallo

Gut ich habe jetzt kapituliert!!!

Ich habe einfach alle benötigten Module von idle in meinen Programmordner gepackt und habe sie umbenannt.

Jetzt gehts und zwar gut, nur habe ich es nicht selber gemacht.
Schade ich hatte schon keinen schlechten ansatz.

Trauriger Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 23. November 2008, 18:11

Wovon redest du? Das scheint ja irgendwie gar nicht in den Kontext des Threads zu passen? Welche Module? Die von Pygments? Die scheinen doch laut deinem Posting zu funktionieren. Die von IDLE? Was hätte das damit zu tun? Welcher Ansatz? Reguläre Ausdrücke? Also die sind definitiv kein brauchbarer Ansatz dafür.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Sonntag 23. November 2008, 18:23

Hallo

Ja das past eigentlich nicht in den Thread, aber mit der Methode finde ich ja auch die strings.

Idle hat ja Syntaxhighlithing und das habe ich eingebaut, halt nur das ich jetzt nicht mehr die Module vom Idle-Ordner benutze sondern im meinem Eigenen Ordner.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
DasIch
User
Beiträge: 2437
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Sonntag 23. November 2008, 18:25

Andyh hat geschrieben:Schade ich hatte schon keinen schlechten ansatz.
Schade dass ich dich in dem Punkt enttäuschen muss. Wenn ein Block(außer bei einer Klasse) so lang ist dass er nicht mehr komplett auf den Bildschirm passt dann ist der Code schlecht.

Desweiteren sieht dein Code wirklich nicht wie Code aus von dem man in ein paar Wochen noch versteht was er eigentlich tun soll.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Sonntag 23. November 2008, 18:34

Hallo

Das ist ja nur der Code zum Stringsuchen und der ist schlecht, aber beim experimentieren mache ich doch nichts schönes.

Der rest ist schon besser, aber auch nicht schön, aber der anstzt dabei wahr nicht schlecht.
Ich hatte schon alles:

-ein Config system um die Einstellungen aus einer txt zu lesen
-Dialoge zum einstellen des Syntaxhighlithing
-Der Benutzer wurde zu PEP8 gezwungen wenn er Farbe sehen wollte
usw.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Sonntag 23. November 2008, 18:36

schade nur, dass dich keiner zu PEP8 zwingt :twisted:
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Sonntag 23. November 2008, 18:42

Hallo

Gerade deswegen habe ich es eingebaut, nur wird da jetzt nichts mehr draus.

Naja dann lerne ich es eben nie :lol:

Achso so siehts aus:

Startdialog:
Bild

Gerade beim Ausführen:
Bild

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Sonntag 23. November 2008, 18:47

Andyh hat geschrieben:Gerade deswegen habe ich es eingebaut, nur wird da jetzt nichts mehr draus.

Naja dann lerne ich es eben nie :lol:
Du kannst den Lexer doch auch selbst schreiben. Du hast gefragt wie man das macht und ich habe gemeint, dass man das Problem durch Lexer löst. Daraufhin hast du erst Pygments installiert und dann sofort danach aufgegeben. Könnte man erfahren wieso? Den Lexer aus Pygments zu verwenden ist die einfachere Lösung, einen Lexer selbst zu schreiben kompilierter (aber durchaus machbar, jedoch nutzen die meisten lieber Tools wie flex oder in Python eben PLY um Lexer zu bauen) aber nicht unmöglich.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten