[Python-de] Zuweisungen bei if?

Thomas Rachel nutznetz-0c1b6768-bfa9-48d5-a470-7603bd3aa915 at spamschutz.glglgl.de
Di Apr 10 09:26:24 CEST 2012


Am 10.04.2012 08:17 schrieb Ulli Horlacher:
> Ich versuche gerade ein paar Perl-Scripte nach Python umzusetzen und
> wundere mich, dass Python bei bestimmten Konstrukten ziemlich umstaendlich
> ist (oder ich die Syntax nicht verstehe). Beispiel:
>
> Perl:
>
>     if (@ARGV and $ARGV[0] =~ /(\w+)/) { print "$1\n" }
>
> Python:
>
>    if len(sys.argv)>1:
>      m = re.match(r".*?(\w+)",sys.argv[1])
>      if m: print m.group(1)

BTW: (s.u.)


>
> Mein erster Ansatz
>
>    if len(sys.argv)>1 and m = re.match(r".*?(\w+)",sys.argv[1]): print m.group(1)
>
> erbrachte einen syntax error: Zuweisungen sind bei if nicht zulaessig?!

Nein, diese beiden sind strikt getrennt. AFAICT kannst Du nur mit zwei 
Ebene arbeiten, wie Du schriebst.

Aber Deine RE ist zu kompliziert. Wenn Du re.search() statt re.match() 
verwendest, kannst Du das .*? weglassen:

     m = re.search(r"(\w+)", sys.argv[1])


Thomas




Mehr Informationen über die Mailingliste python-de