immer 3 Zeichen ersetzen

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.
Antworten
Merle254
User
Beiträge: 8
Registriert: Donnerstag 4. Juni 2020, 16:13

Hallo :)

meine Frage ist, wie ich es schaffe, dass Python immer 3 Zeichen ersetzt.

z.B. abcdefghi --> 189

also das "abc" zu 1 wird, "def" zu 8 und "ghi" zu 9

Vielen Dank schonmal im Voraus :)

Lg Merle
Merle254
User
Beiträge: 8
Registriert: Donnerstag 4. Juni 2020, 16:13

Und Python soll erkennen, dass wenn die Reihenfolge anders ist.
Also bei defabcghi dann 819 entsteht
nezzcarth
User
Beiträge: 1764
Registriert: Samstag 16. April 2011, 12:47

Wenn du möchtest, dass Python etwas tut oder "erkennt" musst du dies programmieren. Was hast du bisher schon versucht, wie sieht dein Code aus?
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Hier kannst Du doch `replace` benutzen.
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Merle254: Du musst halt Code schreiben der das macht was Du haben willst. Also beispielsweise eine Schleife die immer 3 Zeichen betrachtet und die durch ein Zeichen ersetzt und in einer Liste sammelt die am Ende mit der `join()`-Methode auf Zeichenketten zu einer neuen Zeichenkette zusammengesetzt wird.

Statt einer Liste könnte man das auch leicht als Generatorausdruck schreiben, den man direkt als Argument an die `join()`-Methode übergibt.

Für die Abbildung von drei Zeichen auf eines wäre ein Wörterbuch (`dict`) geeignet.

Dann müsste man noch spezifizieren was passieren soll wenn drei Zeichen vorkommen für die es keine Abbildung auf ein Zeichen gibt, und das entsprechend im Code berücksichtigen.

@Sirius: Ist halt die Frage was bei "xabcde" passieren soll, also ob die dreibuchstabigen Kombinationen *irgendwo* in der Zeichenkette stehen dürfen oder immer nur an einem durch 3 teilbaren Index anfangen dürfen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Als Shell-Skript (Bash) könnte das beispielsweise so aussehen:

Code: Alles auswählen

#!/bin/bash
declare -A Mapping=([abc]=1 [def]=8 [ghi]=9)


Replace() {
    local string=$1
    local result=''
    for (( i = 0; i < ${#string}; i += 3 )); do
        result="$result${Mapping[${string:i:3}]}"
    done
    echo "$result"
}


Main() {
    Replace abcdefghi
    Replace defabcghi
}


[[ "${BASH_SOURCE[0]}" == "$0" ]] && Main
Hier werden Buchstabenkombinationen die nicht in der Abbildung vorkommen, einfach durch nichts ersetzt, und falls die Länge der Zeichenkette nicht durch 3 teilbar ist, werden zusätzlich ein oder zwei Zeichen am Ende einfach ignoriert. Da ist dann wieder die Frage was soll in solchen Fällen tatsächlich passieren.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
__blackjack__
User
Beiträge: 14052
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Gibt auch Programmiersprachen wo man sich so eine `replace`-Funktion grafisch zusammenklicken kann:
Bild
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten