Cum pentru a șterge un caracter dintr-un string folosind Python

Există un șir de caractere, de exemplu. "EXEMPLU".

Cum pot elimina mijlocul caracter, de exemplu, " M " de la ea? Eu nu't nevoie de cod. Vreau să știu:

  • Nu siruri de caractere în Python end, în orice caracter special?
  • Ceea ce este o modalitate mai bună - și schimbă totul de la dreapta la stânga, începând de la mijlocul caracter SAU crearea unui nou șir și nu copierea mijloc de caracter?
Comentarii la întrebare (1)
Soluția

În Python, siruri de caractere sunt imuabile, deci va trebui să creați un nou șir de caractere. Aveți câteva opțiuni de modul de a crea noul șir. Dacă doriți să eliminați 'M' oriunde apare:

newstr = oldstr.replace("M", "")

Dacă doriți pentru a elimina personajul central:

midlen = len(oldstr)/2   # //2 in python 3
newstr = oldstr[:midlen] + oldstr[midlen+1:]

M-ai întrebat dacă siruri de caractere termina cu un caracter special. Nu, te gandesti ca un programator C. În Python, siruri de caractere sunt stocate cu lungimea lor, astfel încât orice octet de valoare, inclusiv \0, pot apărea într-un șir.

Comentarii (3)

Aceasta este, probabil, cel mai bun mod:

original = "EXAMPLE"
removed = original.replace("M", "")

Don't vă faceți griji despre schimbarea personaje și astfel. Majoritatea codul Python are loc la un nivel mult mai ridicat de abstractizare.

Comentarii (3)

Pentru a înlocui o anumită poziție:

s = s[:pos] + s[(pos+1):]

Pentru a înlocui un caracter specific:

s = s.replace('M','')
Comentarii (3)

Siruri de caractere sunt imuabile. Dar le puteți converti la o listă, care este mutabil, și apoi converti lista de spate la un șir de caractere după tine'am schimbat-o.

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

De asemenea, puteți crea un nou șir, așa cum alții au arătat, de a lua totul cu excepția caracter din șir existente.

Comentarii (1)

Cum pot elimina mijlocul caracter, de exemplu, M de la ea?

Puteți't, pentru siruri de caractere în Python sunt imuabil.

Nu siruri de caractere în Python end, în orice caracter special?

Nr. Ele sunt similare cu listele de caractere; lungimea listei definește lungimea șirului, și nici un personaj nu acționează ca un terminator.

Care este o modalitate mai bună - și schimbă totul de la dreapta la stânga, începând de la mijlocul caracter SAU crearea unui nou șir și nu copierea mijloc de caracter?

Nu puteți modifica existente șir, așa că trebuie să creați unul nou care conține totul, cu excepția mijloc de caracter.

Comentarii (0)

Folosi traduce() metoda:

>>> s = 'EXAMPLE'
>>> s.translate(None, 'M')
'EXAPLE'
Comentarii (3)

UserString.MutableString

Mutabil mod:

import UserString

s = UserString.MutableString("EXAMPLE")

>>> type(s)


# Delete 'M'
del s[3]

# Turn it for immutable:
s = str(s)
Comentarii (1)
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

Am văzut asta undeva aici.

Comentarii (0)
card = random.choice(cards)
cardsLeft = cards.replace(card, '', 1)

Cum de a elimina un caracter dintr-un sir de caractere: Aici este un exemplu în cazul în care există un teanc de cărți reprezentat ca personaje într-un șir. Unul dintre ei este atras (import aleatoare modulul de întâmplare.alegerea funcția (), care preia un caracter aleatoriu în șir). Un nou șir de caractere, cardsLeft, este creat pentru a ține cărțile rămase dat de șirul funcția replace() în cazul în care ultimul parametru indică faptul că numai unul "carte" este de a fi înlocuite cu șirul vid...

Comentarii (0)

Aici's ceea ce am făcut pentru a felie "M":

s = 'EXAMPLE'
s1 = s[:s.index('M')] + s[s.index('M')+1:]
Comentarii (1)

Dacă doriți să ștergeți/ignore caractere într-un șir, și, de exemplu, aveți acest șir,

"[11:L:0]"

la un web API răspuns sau ceva de genul asta, ca un fișier CSV, las's spun utilizați cereri

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

bucla și de a scăpa de nedorite caractere:

for line in resp.iter_lines():
  line = line.replace("[", "")
  line = line.replace("]", "")
  line = line.replace('"', "")

Opțional split, și vă va fi capabil să citească valorile individual:

listofvalues = line.split(':')

Acum accesarea fiecare valoare este mai ușor:

print listofvalues[0]
print listofvalues[1]
print listofvalues[2]

Acest lucru se va imprima

11

L

0

Comentarii (0)

Pentru a șterge un char "sau o" sub-șir de caractere` după (numai prima apariție):

main_string = main_string.replace(sub_str, replace_with, 1)

NOTĂ: Aici cu " 1 " poate fi înlocuit cu orice int pentru numărul de apariție doriți să-l înlocuiți.

Comentarii (0)

Puteți folosi pur și simplu lista de înțelegere.

Să presupunem că aveți șirul: "numele meu este" și doriți pentru a elimina personajul "m". utilizați următorul cod:

"".join([x for x in "my name is" if x is not 'm'])
Comentarii (0)
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))
Comentarii (1)

Siruri de caractere sunt imuabile în Python deci ambele opțiuni înseamnă același lucru practic.

Comentarii (0)