ist ein regulärer Ausdruck, die tun sollten, was Sie suchen:
newtext = re.sub("([^:]+):([^:]+):([^:]+):([^:]+)(:)?(.*)?",r"\4:\3:\1:\2\5\6",text)
Die wegzunehmen ist Sie wollen Parans verwenden für die Erfassung und dann neu ordnen sie in der Reihenfolge, die Sie wollen in der ersetzen . Jeder capture „Gruppe“ ist nur ein oder mehrere nicht: getrennt durch: Wenn es die Möglichkeit von Leer Gruppen jeweils + auf einen * Änderung
Hier ist ein Beispiel in Python aus Gründen der Klarheit ist:
import re
textlist = [
"1:2:3:4:5:6:7:8",
"1:2:3:4:5",
"1:2:3:4",
]
for text in textlist:
newtext = re.sub("([^:]+):([^:]+):([^:]+):([^:]+)(:)?(.*)?",r"\4:\3:\1:\2\5\6",text)
print (newtext)
output:
4:3:1:2:5:6:7:8
4:3:1:2:5
4:3:1:2
Nicht klar, bitte fügen Sie mehr Beispiel Input_file und erwartete Ausgabe auch in Ihrem Beitrag mit Code-Tags. – RavinderSingh13