dividir la cadena en 2 según la última aparición de un separador

100

Me gustaría saber si hay alguna función incorporada en Python para dividir la cadena en 2 partes, según la última aparición de un separador.

por ejemplo: considere la cadena "abc, d, e, f", después de la división sobre el separador ",", quiero la salida como

"abc, d, e" y "f".

Sé cómo manipular la cadena para obtener el resultado deseado, pero quiero saber si hay alguna función incorporada en Python.

Yashwanth Kumar
fuente

Respuestas:

118

Utilice rpartition(s). Hace exactamente eso.

También puede utilizar rsplit(s, 1).

Petar Ivanov
fuente
11
No exactamente: "abc, d, e, f" .rpartition (',') -> ('abc, d, e', ',', 'f')
Vanuan
@Vanuan, es EXACTAMENTE eso en realidad. También devuelve el separador por una razón u otra: str.rpartition (sep) Divide la cadena en la última aparición de sep y devuelve una tupla de 3 que contiene la parte antes del separador, el separador en sí y la parte después del separador . Si no se encuentra el separador, devuelve una tupla de 3 que contiene dos cadenas vacías, seguida de la cadena en sí.
Petar Ivanov
23
rsplit(s, 1)y la rpartition(s)salida es diferente, debes admitirlo.
Vanuan
73
>>> "a b c,d,e,f".rsplit(',',1)
['a b c,d,e', 'f']
Gryphius
fuente
54

Puede dividir una cadena por la última aparición de un separador con rsplit:

Devuelve una lista de las palabras de la cadena, separadas por la cadena delimitadora (empezando por la derecha).

Para dividir por la última coma:

>>> "a b c,d,e,f".rsplit(',', 1)
['a b c,d,e', 'f']
GUERRA
fuente