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.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

jo stimmt, ist mir jetzt auch wieder eingefallen

Code: Alles auswählen

a = 'ich bIn ein StrIng'
print a.lower().count('i')
Ergebnis:

Code: Alles auswählen

>>> a = 'ich bIn ein StrIng'
>>> print a.lower().count('i')
4
>>> a
'ich bIn ein StrIng'
the more they change the more they stay the same
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Danke hat funktioniert
mit
User
Beiträge: 285
Registriert: Dienstag 16. September 2008, 10:00

Wie würde der folgender Perl Code in Python aussehen?

Code: Alles auswählen

my ($x1, @model1) = split /\s+/, "AXDA     .255 .245 .245 .255";    
print $x1, "\n";
print @model1, "\n";
my ($x2, @model2) = split /\s+/, "CYEC	  .225 .275 .275 .225";
print $x2, "\n";
print @model2, "\n";

my @lod = map(lg($model1[$_]/$model2[$_]), (0..3));
print @lod, "\n";

my $a = "aagcaaatccgcgataaaattgccttggggcgtataaaagg";
$a =~ tr/acgtACGT/01230123/;
print $a, "\n";
my $score = sum(map($lod[$_], split //,$a));
print $score, "\n"; 
Ausgabe:

Code: Alles auswählen

AXDA
.255.245.245.255
CYEC
.225.275.275.225
0.180572245641821-0.166649869409451-0.1666498694094510.180572245641821
00210003112120300003321133222212303000022
1.15346400039175
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das ist doch eine neue Frage. Lege dafür doch einen neuen Thread an. Aber es wäre schon schön, wenn du selbst etwas Eigeninitiative zeigst, statt andere den Perl-Code übersetzen zu lassen.
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:

Richtig. Wir sind hier kein Perl Forum. Probier es selbst und wenn du konkrete Fragen zu Python hast, kannst du die gerne hier stellen.
Bottle: Micro Web Framework + Development Blog
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