Reguläre Ausdrücke

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.
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Sorry, habe nun konkrete Fragen:

Code: Alles auswählen

#1.
##my ($x1, @model1) = split /\s+/, "AXDA     .255 .245 .245 .255";   
x1, model1 = "AXDA     .255 .245 .245 .255".split()

#2.
##my @lod = map(lg($model1[$_]/$model2[$_]), (0..3));
lod = map(lambda x: [lg($model1[x]/$model2[x] ], range(0,4))

#3
#my $a = "aagcaaatccgcgataaaattgccttggggcgtataaaagg";
#$a =~ tr/acgtACGT/01230123/; 
a = "aagcaaatccgcgataaaattgccttggggcgtataaaagg";
a.translate(string.maketrans('acgtACGT', '01230123')
         
#4.
#my $score = sum(map($lod[$_], split //,$a));
zu 1: Leider erkennt Python nicht, dass model1 ein Array sein soll. Gibt es in Python dafür eine andere schreibweise?

zu 2: Hier bin ich nicht sicher ob es so funktionieren kann, da 1 nicht funktioniert.

zu 3: Das müsste funktionieren.

zu 4: Hier weiss ich nicht wie man es umschreibt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

mit hat geschrieben:zu 1: Leider erkennt Python nicht, dass model1 ein Array sein soll. Gibt es in Python dafür eine andere schreibweise?
Ab Python 3 geht:

Code: Alles auswählen

a, *b = range(3)
mit hat geschrieben:zu 2: Hier bin ich nicht sicher ob es so funktionieren kann, da 1 nicht funktioniert.
Ne, kanns nicht weil Python keine Skalar-Dollarzeichen benutzt. Das solltest du inzwischen wissen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
Defnull
User
Beiträge: 778
Registriert: Donnerstag 18. Juni 2009, 22:09
Wohnort: Göttingen
Kontaktdaten:

Zu 1:
x1, model1 = "AXDA .255 .245 .245 .255".split(' ')
model1 = model1.split()

Zu 2: Du solltest für eine bessere Lesbarkeit eine for-schleife nehmen. Map+lambda funktioniert, ist aber eher unleserlich. Und schmeiss die Dollar-Zeichen weg :)

Zu 4: Was tut es denn? Ich kann kein Perl.
Bottle: Micro Web Framework + Development Blog
problembär

mit hat geschrieben:Wie lernt man am besten Reguläre Ausdrücke gibt es ein gutes Buch oder Howtos?
2 Seiten: 1, 2.

Gruß
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

http://www.regular-expressions.info/

Dort gibt es auch Buecherempfehlungen.
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Danke, aber leider funktioniert der Code immer noch nicht.

Ich habe hier ( http://www.python-forum.de/viewtopic.ph ... 717#149717 ) ein neues Thema gestartet, da es wirklich nicht mehr hier hinein gehört.
Ronnie
User
Beiträge: 73
Registriert: Sonntag 21. März 2004, 17:44

mit hat geschrieben: Leider weiss ich nicht wie diesen Perl Code:

Code: Alles auswählen

$com = 'ADFdiKL'
$com =~ tr/ADFadf/XYZxyz/;
Wie würde dies in Python aussehen?
Zur Not baust du dir eben eine eigene tr-Funktion:

Code: Alles auswählen

>>> def translator(source, destination):
	lookup = dict(zip(source, destination))
	return lambda i: ''.join([lookup[c] for c in i])

>>> tr = translator("ADFadf","XYZxyz")
>>> tr('afdFAD')
'xzyZXY'
Allerdings ist es immer empfehlenswert auf erprobte eingebaute Wege zurückzugreifen.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Das Leben ist wie ein Tennisball.
Ronnie
User
Beiträge: 73
Registriert: Sonntag 21. März 2004, 17:44

Danke. Die Möglichkeit wurde ja auch schon weiter oben aufgezeigt und es ist immer sinnvoll erprobte eingebaute Funktionen/Methoden zu nutzen. Eigentlich wollte ich nur zeigen, dass es nicht schwer ist die gewünschte Funktion nachzubauen. :oops:
Achtung: User ist ein Python-Lehrling!
Antworten