Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[Python 3]Remplazar un caracter de un string
#1
Hola, tengo este string: "\x1b[;36m". Me gustaría reemplazar el 3 por 4.
Pero también tengo esta variable: "\x1b[1;36m", la cual también debo reemplazar el 3 por 4.
Esto debo ponerlo dentro de esta función:
Código:
  1. def textbackground(bgcolor):
  2.        """
  3.        Put 4 bit color to background
  4.        """
  5.        puts(bgcolor)

También tengo esta variable, pero esta en 0x4, le tengo que añadir un cero, lo cual no he logrado...
Saludos
Responder
#2
Hola, podés usar el método replace() de las cadenas.

Está ejemplificado en este artículo: https://recursospython.com/guias-y-manua...s-cadenas/.

Saludos
Responder
#3
(07-09-2018, 09:33 PM)Francisco escribió: Hola, podés usar el método replace() de las cadenas.

Está ejemplificado en este artículo: https://recursospython.com/guias-y-manua...s-cadenas/.

Saludos

Gracias, pero se da la situacion de que si se tiene una string como esta: "\x1b[1;33m", reemplazará ambos 3, y solo se debe reemplazar el primer 3.
Responder
#4
Entonces podés inventar algo así:

  1. def replace_first(s, a, b):
  2. index = s.find(a)
  3. if index == -1:
  4. return s
  5. return "".join((s[:index], b, s[index + 1:]))
  6.  
  7. print(replace_first("\x1b[;36m", "3", "4"))
  8. print(replace_first("\x1b[1;36m", "3", "4"))
Responder
#5
(08-09-2018, 07:18 PM)Francisco escribió: Entonces podés inventar algo así:

  1. def replace_first(s, a, b):
  2.    index = s.find(a)
  3.    if index == -1:
  4.        return s
  5.    return "".join((s[:index], b, s[index + 1:]))
  6.  
  7. print(replace_first("\x1b[;36m", "3", "4"))
  8. print(replace_first("\x1b[1;36m", "3", "4"))

Muchas gracias, y en especial a su paciencia.
Responder
#6
(08-09-2018, 07:18 PM)Francisco escribió: Entonces podés inventar algo así:

  1. def replace_first(s, a, b):
  2.    index = s.find(a)
  3.    if index == -1:
  4.        return s
  5.    return "".join((s[:index], b, s[index + 1:]))
  6.  
  7. print(replace_first("\x1b[;36m", "3", "4"))
  8. print(replace_first("\x1b[1;36m", "3", "4"))

Por cierto, se me olvidaba, como para añadirle un 0 a un valor hexadecimal?
Ej: Tenemos la variable a = 0x3, y quisiera añadirle un 0 mas para que quede como 0x30.
Cuando se hace cualquier operación con un hexadecimal, (que es un integer), el 0x se elimina.
Responder
#7
0x3 y 0x30 son dos números diferentes, equivalen al 3 y al 48 en el sistema decimal, respectivamente.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)