Замена последнего вхождения двоеточия

#python #string

#python #строка

Вопрос:

У меня есть

 01:22:33:22
 

Я хотел бы заменить последнее двоеточие во временном коде точкой с запятой, в результате 01:22:33;22 чего .

Первоначально я использовал

 colon = tcode.rfind(":")
new_tcode = tcode[:colon]   ";"   tcode[colon 1:]
 

Теперь я получаю такие ошибки, как «объект не имеет атрибута ‘rfind'».

Комментарии:

1. «ex» в «регулярном выражении» уже означает «выражение».

Ответ №1:

Использование rsplit() и maxsplit=1 :

 d = "01:22:33:22"
print(';'.join(i for i in d.rsplit(':',1)) )
 

Комментарии:

1. Почему i for i in d.rsplit(':',1) ? Почему не просто ';'.join(d.rsplit(':',1)) ?

Ответ №2:

Это регулярное выражение работает:

 >>> import re
>>> re.sub(":(?=[^:]*$)", ";", "01:22:33:22")
'01:22:33;22'
 

Комментарии:

1. Использование регулярного выражения сомнительно и, вероятно, медленнее, чем rsplit , однако.