Die Suche ergab 87 Treffer

von Luzandro
Montag 5. März 2007, 12:43
Forum: Allgemeine Fragen
Thema: Lines aus Files mit verschiedenen Line endings extrahieren
Antworten: 8
Zugriffe: 687

Hätt ich auch, wenn ichs nicht schon wieder vergessen hätte ;)
von Luzandro
Montag 5. März 2007, 11:59
Forum: Allgemeine Fragen
Thema: Lines aus Files mit verschiedenen Line endings extrahieren
Antworten: 8
Zugriffe: 687

Du kannst re.split nehmen um mehrere Separator anzugeben

Code: Alles auswählen

re.split("\r\n|\n|\r", text)
von Luzandro
Freitag 2. März 2007, 17:21
Forum: Allgemeine Fragen
Thema: Bewertung meines ersten ernst gemeinten Python-Codes
Antworten: 18
Zugriffe: 1347

Zu Luzandros RE-Verbesserung: Diese Methode: addr = longAddrRE.search(addr).group(1) hat einen Nachteil. Gibt es keinen Treffer, gibt search() None zurück, was bedeutet, dass group() nicht aufgerufen werden kann. Es müsste dann schon eher so heißen: foo = longAddrRE.search(addr) if foo is not None:...
von Luzandro
Freitag 2. März 2007, 12:43
Forum: Allgemeine Fragen
Thema: Bewertung meines ersten ernst gemeinten Python-Codes
Antworten: 18
Zugriffe: 1347

Beim email-Pattern müsste in der ersten Gruppe zumindest noch ein "." vorkommen und das ganze sollte noch case-insensitive sein.

Code: Alles auswählen

addr = longAddrRE.sub(r"\1", addr)
ist zwar korrekt und kürzer, ich persönlich würde es aber dennoch anders schreiben:

Code: Alles auswählen

addr = longAddrRE.search(addr).group(1)
von Luzandro
Freitag 23. Februar 2007, 16:00
Forum: Allgemeine Fragen
Thema: Wieder mal Regular Expressions
Antworten: 13
Zugriffe: 2401

Re: Wieder mal Regular Expressions

Wenn ich dich richtig verstanden habe, müsste auch das reichen:

Code: Alles auswählen

map(len, re.findall(r"\S+|\s+", text))
von Luzandro
Freitag 23. Februar 2007, 15:38
Forum: Allgemeine Fragen
Thema: RegEx-Performance Beispiele
Antworten: 7
Zugriffe: 2362

Was verstehst du unter "dieses Problem" und "konventionell"? Das erste dort angegebene Beispiel mit "a?^na^n" ist ja sowieso nur zur Demonstration geeignet, um zu sehen _dass_ ein Problem auftritt und recht einleuchtend ist _warum_ es in diesem Fall auftritt - allerdings würde sowieso niemand auf di...
von Luzandro
Freitag 23. Februar 2007, 07:45
Forum: Allgemeine Fragen
Thema: RegEx-Performance Beispiele
Antworten: 7
Zugriffe: 2362

Re: RegEx-Performance Beispiele

print "%.2f usec/pass" % (loop * t1.timeit(number = loop) / loop) Was soll denn der Sinn von diesem *loop/loop sein? error_l1 = re.compile(r'error|miss|issing|inval|nvalid|math') error_l2 = re.compile(r'error|m?(iss(?:ing)?|ath)|i?nval(?:id)?') Die Ausdrücke sind auch nicht wirklich equivalent, da ...
von Luzandro
Mittwoch 21. Februar 2007, 09:41
Forum: Allgemeine Fragen
Thema: Einige Fragen zu Klassen
Antworten: 13
Zugriffe: 1421

Ah! Klar, danke - sonst müsste ich mir ja beim Ableiten Gedanken über interne Details der Klasse machen
von Luzandro
Mittwoch 21. Februar 2007, 09:12
Forum: Allgemeine Fragen
Thema: Einige Fragen zu Klassen
Antworten: 13
Zugriffe: 1421

Re: Einige Fragen zu Klassen

Jepp. Das ist nur ein Styleguide. Man kann auf Methoden und Attribute mit einem _ oder __ weiterhin von außen zugreifen. Wobei bei 2 Unterstrichen der Name des Attributes geändert wird und man nicht direkt mit dem eigentlichen Namen darauf zugreifen kann, aber was der Sinn davon ist weiß ich eigent...
von Luzandro
Freitag 16. Februar 2007, 11:56
Forum: Allgemeine Fragen
Thema: [gelöst] RegExp - mehrere Treffer in einer Zeile
Antworten: 10
Zugriffe: 1706

querdenker hat geschrieben:habe das gerade mal nachgestellt:

Code: Alles auswählen

>>> import re, timeit
>>> input='x'  'XXX'*666 + 'x'
Du hast einen anderen input: das *666 bezieht sich bei dir auf den String "xXXX" und damit gibt es viel früher einen Match.
von Luzandro
Donnerstag 15. Februar 2007, 18:24
Forum: Allgemeine Fragen
Thema: [gelöst] RegExp - mehrere Treffer in einer Zeile
Antworten: 10
Zugriffe: 1706

>>> import re, timeit >>> input = "x"+ "XXX"*666 + "x" >>> p1 = re.compile("x([^x]+)x") >>> p2 = re.compile("x(.+?)x") >>> timeit.Timer("p1.search(input)", "from __main__ import p1, input").timeit() 3.76698899269104 >>> timeit.Timer("p2.search(input)", "from __main__ import p2, input").timeit() 139...
von Luzandro
Donnerstag 15. Februar 2007, 17:54
Forum: Allgemeine Fragen
Thema: [gelöst] RegExp - mehrere Treffer in einer Zeile
Antworten: 10
Zugriffe: 1706

Es ist auch schneller, auch wenn man das wohl meistens vernachlässigen kann, wenn es nicht gerade besonders oft in einer Schleife aufgerufen wird.
Ich würde dennoch die Negation bevorzugen, da damit expliziter angegeben wird, was gesucht ist.
von Luzandro
Donnerstag 15. Februar 2007, 13:23
Forum: Allgemeine Fragen
Thema: in for ... in ... auf index zugreifen
Antworten: 10
Zugriffe: 1889

Dill hat geschrieben: >>> s
'\x01'
>>> print s
☺ #<-- hier hätte ich gern die hex darstellung!!

Code: Alles auswählen

>>> print '\x01'.encode("string-escape")
\x01
von Luzandro
Mittwoch 14. Februar 2007, 07:30
Forum: Allgemeine Fragen
Thema: [Gelöst] Frage zu non-overlapping matches.
Antworten: 8
Zugriffe: 1312

Machbar ja, sinnvoll in meiner Meinung nach nicht - dein voriger Ausdruck sucht den längsten Match, der _irgendetwas_ findet, also einfach alles. Was du willst ist der kürzeste Teil, der _nicht_ deine anderen Teile matcht - solche negativen Geschichten als regex ausdrücken ist etwas mühsam, aber in ...