wake-up-neo.com

So löschen Sie ein Zeichen mit Python aus einer Zeichenfolge

Es gibt zum Beispiel eine Zeichenfolge. EXAMPLE.

Wie kann ich das mittlere Zeichen entfernen, d. H. M daraus? Ich brauche den Code nicht. Ich möchte gerne wissen:

  • Enden die Zeichenfolgen in Python mit einem Sonderzeichen?
  • Was ist ein besserer Weg - alles von rechts nach links zu verschieben, beginnend mit dem mittleren Zeichen OR, Erstellen eines neuen Strings und nicht das mittlere Zeichen kopieren?
362
Lazer

In Python sind Zeichenfolgen unveränderlich. Sie müssen also eine neue Zeichenfolge erstellen. Sie haben einige Möglichkeiten, wie Sie die neue Zeichenfolge erstellen. Wenn Sie das 'M' entfernen möchten, wo immer es erscheint:

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

Wenn Sie das zentrale Zeichen entfernen möchten:

midlen = len(oldstr)/2
newstr = oldstr[:midlen] + oldstr[midlen+1:]

Sie haben gefragt, ob Zeichenfolgen mit einem Sonderzeichen enden. Nein, Sie denken wie ein C-Programmierer. In Python werden Zeichenfolgen mit ihrer Länge gespeichert, sodass jeder Bytewert, einschließlich \0, in einer Zeichenfolge angezeigt werden kann.

515
Ned Batchelder

Dies ist wahrscheinlich der beste Weg:

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

Mach dir keine Sorgen über das Verschieben von Charakteren und so. Der meiste Python-Code findet auf einer viel höheren Abstraktionsebene statt.

58
recursive

Um eine bestimmte Position zu ersetzen:

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

So ersetzen Sie ein bestimmtes Zeichen:

s = s.replace('M','')
52
Eton B.

Strings sind unveränderlich. Sie können sie jedoch in eine Liste konvertieren, die veränderbar ist, und die Liste dann wieder in eine Zeichenfolge konvertieren, nachdem Sie sie geändert haben.

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

Sie können auch eine neue Zeichenfolge erstellen, indem Sie, wie andere gezeigt haben, alles außer dem gewünschten Zeichen aus der vorhandenen Zeichenfolge entnehmen.

23
kindall

Wie kann ich das mittlere Zeichen, d. H. M, entfernen?

Das geht nicht, weil Strings in Python unveränderlich sind.

Enden die Zeichenfolgen in Python mit einem Sonderzeichen?

Nein. Sie ähneln Listen von Zeichen. Die Länge der Liste definiert die Länge der Zeichenfolge. Kein Zeichen fungiert als Abschlusszeichen.

Was ist ein besserer Weg - alles von rechts nach links zu verschieben, beginnend mit dem mittleren Zeichen OR, Erstellen eines neuen Strings und nicht das mittlere Zeichen kopieren?

Sie können die vorhandene Zeichenfolge nicht ändern. Sie müssen also eine neue Zeichenfolge erstellen, die alles außer dem mittleren Zeichen enthält.

11
Richard Fearn

Verwenden Sie die Methode translate() :

>>> s = 'EXAMPLE'
>>> s.translate(None, 'M')
'EXAPLE'
10
card = random.choice(cards)
cardsLeft = cards.replace(card, '', 1)

So entfernen Sie ein Zeichen aus einer Zeichenfolge: Hier ist ein Beispiel, in dem ein Stapel von Karten als Zeichen in einer Zeichenfolge dargestellt ist . Eine davon wird gezeichnet (Importieren des Zufallsmoduls für die Zufallszahlen). choice () - Funktion, die ein zufälliges Zeichen in der Zeichenfolge auswählt) ..__ Eine neue Zeichenfolge, cardsLeft, wird erstellt, um die verbleibenden Karten zu enthalten, die von der Zeichenfolgenfunktion replace () übergeben werden, wobei der letzte Parameter angibt, dass nur eine "Karte" soll durch die leere Zeichenfolge ersetzt werden ...

5
StaffanRolfsson

UserString.MutableString

Veränderliche Weise:

import UserString

s = UserString.MutableString("EXAMPLE")

>>> type(s)
<type 'str'>

# Delete 'M'
del s[3]

# Turn it for immutable:
s = str(s)
5
killown

Folgendes habe ich getan, um das "M" herauszuschneiden:

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

Wenn Sie Zeichen in einer Zeichenfolge löschen oder ignorieren möchten, und Sie diese Zeichenfolge haben,

[11: L: 0]

angenommen, Sie verwenden Anfragen aus einer Web-API-Antwort oder ähnlich wie eine CSV-Datei

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

schleifen und unerwünschte Zeichen loswerden:

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

Optionale Aufteilung, und Sie können die Werte einzeln lesen:

listofvalues = line.split(':')

Nun ist der Zugriff auf jeden Wert einfacher:

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

Dies wird gedruckt

11

L

0

3
d1jhoni1b
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

Ich habe das irgendwo gesehen hier .

3
user1443297

So löschen Sie eine char oder einen sub-string einmal (nur beim ersten Auftreten): 

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

HINWEIS: Hier kann 1 durch eine beliebige int für die Anzahl der Vorkommnisse ersetzt werden, die Sie ersetzen möchten. 

0
BlackBeard
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))
0

Sie können einfach Listenverständnis verwenden.

Angenommen, Sie haben die Zeichenfolge: my name is und möchten das Zeichen m entfernen. Verwenden Sie den folgenden Code:

"".join([x for x in "my name is" if x is not 'm'])
0
hubert