it-swarm.com.de

Python ist die beste Methode zum Entfernen von Zeichen aus Zeichenfolge nach Index

Ich entferne ein Zeichen wie folgt aus einem String:

S = "abcd"
Index=1 #index of string to remove
ListS = list(S)
ListS.pop(Index)
S = "".join(ListS)
print S
#"acd"

Ich bin sicher, dass dies nicht der beste Weg ist, dies zu tun. 

EDIT Ich habe nicht erwähnt, dass ich eine Stringgröße mit der Länge ~ 10 ^ 7 bearbeiten muss. Daher ist es wichtig, auf Effizienz zu achten. 

Kann mir jemand helfen. Welcher pythonische Weg es zu tun?

6
Alvaro Joao

Sie können alle Listenoperationen mit Slicing umgehen:

S = S[:1] + S[2:]

oder allgemeiner

S = S[:Index] + S[Index + 1:]

Viele Antworten auf Ihre Frage (einschließlich solcher) finden Sie hier: Wie lösche ich ein Zeichen aus einem String mit Python? . Bei dieser Frage geht es jedoch nominell um das Löschen nach Wert und nicht nach Index.

18
Mad Physicist

Schneiden ist der beste und einfachste Ansatz, den ich mir vorstellen kann. Hier sind einige andere Alternativen:

>>> s = 'abcd'
>>> def remove(s, indx):
        return ''.join(x for x in s if s.index(x) != indx)

>>> remove(s, 1)
'acd'
>>> 
>>> 
>>> def remove(s, indx):
        return ''.join(filter(lambda x: s.index(x) != 1, s))

>>> remove(s, 1)
'acd'

Beachten Sie, dass die Indizierung auf Null basiert.

3
Iron Fist

Sie können das Indexzeichen durch "" ersetzen.

str = "ab1cd1ef"
Index = 3
print(str.replace(str[Index],"",1))
0
min2bro