separar - Cómo eliminar un carácter de una cadena usando Python
reemplazar caracteres en python (15)
Hay una cadena, por ejemplo. EXAMPLE
.
¿Cómo puedo eliminar el carácter medio, es decir, M
de él? No necesito el código. Quiero saber:
- ¿Las cadenas en Python terminan en algún carácter especial?
- ¿Cuál es una mejor manera: cambiar todo de derecha a izquierda a partir del carácter medio O la creación de una nueva cadena y no copiar el carácter central?
¿Cómo puedo eliminar el carácter medio, es decir, M de él?
No puedes, porque las cadenas en Python son immutable .
¿Las cadenas en Python terminan en algún carácter especial?
No. Son similares a las listas de personajes; la longitud de la lista define la longitud de la cadena y ningún carácter actúa como terminador.
¿Cuál es una mejor manera: cambiar todo de derecha a izquierda a partir del carácter medio O la creación de una nueva cadena y no copiar el carácter central?
No puede modificar la cadena existente, por lo que debe crear una nueva que contenga todo, excepto el carácter central.
En Python, las cadenas son inmutables, por lo que debes crear una nueva cadena. Tienes algunas opciones de cómo crear la nueva cadena. Si quieres eliminar la ''M'' donde aparezca:
newstr = oldstr.replace("M", "")
Si quieres eliminar el carácter central:
midlen = len(oldstr)/2
newstr = oldstr[:midlen] + oldstr[midlen+1:]
Preguntaste si las cuerdas terminan con un caracter especial. No, estás pensando como un programador de C En Python, las cadenas se almacenan con su longitud, por lo que cualquier valor de byte, incluido /0
, puede aparecer en una cadena.
Esta es probablemente la mejor manera:
original = "EXAMPLE"
removed = original.replace("M", "")
No te preocupes por cambiar de personaje y tal. La mayoría del código de Python tiene lugar en un nivel mucho más alto de abstracción.
Esto es lo que hice para cortar la "M":
s = ''EXAMPLE''
s1 = s[:s.index(''M'')] + s[s.index(''M'')+1:]
Las cadenas son inmutables en Python, por lo que ambas opciones significan básicamente lo mismo.
Las cuerdas son inmutables. Pero puede convertirlos a una lista, que es mutable, y luego volver a convertir la lista en una cadena después de haberla cambiado.
s = "this is a string"
l = list(s) # convert to list
l[1] = "" # "delete" letter h (the item actually still exists but is empty)
l[1:2] = [] # really delete letter h (the item is actually removed from the list)
del(l[1]) # another way to delete it
p = l.index("a") # find position of the letter "a"
del(l[p]) # delete it
s = "".join(l) # convert back to string
También puede crear una nueva cadena, como lo han mostrado otros, tomando todo excepto el carácter que desea de la cadena existente.
Para eliminar una char
o una char
una vez (solo la primera vez):
main_string = main_string.replace(sub_str, replace_with, 1)
NOTA: Aquí se puede reemplazar 1 por cualquier int
para el número de ocurrencias que desea reemplazar.
Para reemplazar una posición específica:
s = s[:pos] + s[(pos+1):]
Para reemplazar un personaje específico:
s = s.replace(''M'','''')
Si desea eliminar / ignorar los caracteres de una cadena y, por ejemplo, tiene esta cadena,
"[11: L: 0]"
de una respuesta de la API web o algo así, como un archivo CSV, digamos que está utilizando solicitudes
import requests
udid = 123456
url = ''http://webservices.yourserver.com/action/id-'' + udid
s = requests.Session()
s.verify = False
resp = s.get(url, stream=True)
content = resp.content
bucle y deshacerse de caracteres no deseados:
for line in resp.iter_lines():
line = line.replace("[", "")
line = line.replace("]", "")
line = line.replace(''"'', "")
División opcional, y podrás leer valores individualmente:
listofvalues = line.split('':'')
Ahora acceder a cada valor es más fácil:
print listofvalues[0]
print listofvalues[1]
print listofvalues[2]
Esto imprimirá
11
L
0
Simplemente puede utilizar la lista de comprensión.
Supongamos que tiene la cadena: my name is
y desea eliminar el carácter m
. Usa el siguiente código:
"".join([x for x in "my name is" if x is not ''m''])
Utilice el método translate()
:
>>> s = ''EXAMPLE''
>>> s.translate(None, ''M'')
''EXAPLE''
Forma mutable:
import UserString
s = UserString.MutableString("EXAMPLE")
>>> type(s)
<type ''str''>
# Delete ''M''
del s[3]
# Turn it for immutable:
s = str(s)
card = random.choice(cards)
cardsLeft = cards.replace(card, '''', 1)
Cómo eliminar un carácter de una cadena: Aquí hay un ejemplo donde hay una pila de tarjetas representadas como caracteres en una cadena. Uno de ellos está dibujado (importar módulo aleatorio para la función random.choice (), que elige un carácter aleatorio en la cadena). Se crea una nueva cadena, cardsLeft, para contener las tarjetas restantes proporcionadas por la función de cadena replace () donde el último parámetro indica que solo se debe reemplazar una "tarjeta" por la cadena vacía ...
def kill_char(string, n): # n = position of which character you want to remove
begin = string[:n] # from beginning to n (n not included)
end = string[n+1:] # n+1 through end of string
return begin + end
print kill_char("EXAMPLE", 3) # "M" removed
He visto esto en alguna parte here .
from random import randint
def shuffle_word(word):
newWord=""
for i in range(0,len(word)):
pos=randint(0,len(word)-1)
newWord += word[pos]
word = word[:pos]+word[pos+1:]
return newWord
word = "Sarajevo"
print(shuffle_word(word))