Seite 1 von 1
regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 09:48
von gooogle
Hallo,
ich versuche mich gerade an den regulären ausdrücken. aber scheitere am 1. versuch.
ich möchte gerne die replace(" ", "") methode verwenden, allerdings mit einer bedingung.
Code: Alles auswählen
a = " Michael: "He went to me" , .... ----- - - - ) ) ) : "But without me" - - )"
alles was mit hochstriche angegeben ist soll bei der replace anwendung ignoriert werden, sodass folgendes rauskommt:
Code: Alles auswählen
"Michael:"He went to me",....--------))):"But without me"--)"
hoffe ihr habt verstanden was ich meine

Re: regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 10:11
von jbs
Und wo ist dein Versuch?
Re: regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 11:45
von gooogle
Hallo,
was ich versucht habe ist wie folgt:
Code: Alles auswählen
text = "He ( '1 1 1') carefully 'zz z' disguised (()) 'b u t'}--- captured quickly by police."
v = findall("'.*?'",text)
print v
for i in v:
text = text.replace(i, (i.replace(" ","$$")))
print "vers 1 ", text
text = text.replace(" ","")
print "vers 2 ",text
text = text.replace("$$"," ")
print "last version ", text
sieht aber nicht elegant aus

Re: regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 11:58
von mkesper
ergibt für mich keinen Sinn, das findet doch allen Text, oder?
Re: regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 12:01
von gooogle
Hallo,
nee, eigentlich nur den in Hochkomma, also alles was in '...' sich befindet.

Re: regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 12:03
von Hyperion
Was ist denn das für ein Format?
Du willst Dich hier mit Parsern befassen - ohne Zustandsautomaten geht hier nicht viel denke ich. BlackJack hat hier ein nettes Beispiel gepostet:
http://python-forum.de/viewtopic.php?f=1&t=24221
Re: regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 12:06
von sma
Du versuchst Dinge zu machen, die mit einfachen regulären Ausdrücken nicht gehen (hängt alles damit zusammen, dass reguläre Sprachen nicht zählen können). Aber ich biete dir dies:
Code: Alles auswählen
import re
s = ' Michael: "He went to me" , .... ----- - - - ) ) ) : "But without me" - - )'
print("".join(x if x[0] == '"' else x.replace(" ", "") for x in re.findall(r'"[^"]*"|[^"]+', s)))
Stefan
Re: regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 12:19
von gooogle
Hallo
danke für die tipps.
ich verstehe dass ihr andere möglichkeiten bietet, die effizienter sind. aber bedenkt, ich lerne noch..ich muss langsam reinkommen, dazu muss ich alles mal ausgetestet haben
also meine methode funktioniert, musste nur auch die andere variante beachten:
mit
for i in ["'.*?'", '".*?"']:
v = findall(i,text)
Gruss
Re: regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 12:20
von Hyperion
Auch als Anfänger kann man einfache Rückfragen beantworten denke ich!
Hyperion hat geschrieben:Was ist denn das für ein Format?
Re: regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 12:25
von gooogle
was meinst du mit Format?
Es handelt sich um einen einfachen string

Re: regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 12:36
von Hyperion
gooogle hat geschrieben:was meinst du mit Format?
Es handelt sich um einen einfachen string

Ich meine die Syntax des Strings. Was ist das? Der String fällt ja nicht vom Himmel!
Re: regular expressions 1. versuch
Verfasst: Freitag 24. September 2010, 12:44
von BlackJack
Hier ein Versuch mit `pyparsing`:
Code: Alles auswählen
import pyparsing as pp
def main():
def remove_spaces(source, line, tokens):
return tokens[0].replace(' ', '')
not_string = pp.CharsNotIn('"\'').setParseAction(remove_spaces)
grammar = pp.Combine(pp.ZeroOrMore(not_string | pp.quotedString))
source = (' Michael: "He went to me" , .... ----- - - -'
' ) ) ) : \'But without me\' - - )')
print grammar.parseString(source)[0]
if __name__ == '__main__':
main()