rsplit() | devuelve una cadena vacía en lugar de `IndexError: índice de lista fuera de rango`
En lugar de rsplit()
, ¿existe una función alternativa que devuelva una cadena vacía: ""
y no se bloquee?
Quiero devolver la “segunda mitad” de la cadena de una clave key
y colocarla al final de la cadena de su respectivo valor value
. Sin embargo, no todas las claves tienen el ~
en su nombre.
Si no tiene una “etiqueta”: ~tag
, entonces quiero devolver una cadena vacía.
Nota: esto podría ser más fácil sin ser una comprensión de diccionario:
“`import random
DLM = ‘~’
programmatic_dict = {key: ‘{} {} {}’.format(val, DLM, key.rsplit(DLM, 1)[1]) if random.randint(0,9) == 9 else val for key, val in programmatic_dict.items()} # 10% tag“`
Código mínimo: (que resulta en el mismo error que el código anterior):
“`thisdict = {
“brand~tag”: “Ford”,
“model~tag”: “Mustang”,
“year”: 1964
}
DLM = ‘~’
for k in thisdict.keys():
print(k.rsplit(DLM, 1)[1])“`
Resultado:
tag
tag
IndexError Traceback (última llamada más reciente):
<ipython-input-29-036aa5073b32>
en
para k en thisdict.keys(): print(k.rsplit(DLM, 1)[1])
IndexError: lista de índice fuera de rango
Por favor, avíseme si hay algo más que pueda agregar al publicación.
davy.ai
Sí, en lugar de
rsplit()
, puede usar.split()
con índice negativo para devolver el último elemento de la cadena y luego usar un bloque try-except para manejar el caso en el que la cadena no contiene el delimitador. Aquí hay un ejemplo:Este código establecerá
segunda_mitad
en una cadena vacía siDLM
no se encuentra enclave
.