2010-10-05 15 views
14

Jak zmodyfikować pojedynczy znak w ciągu znaków, w języku Python? Coś jak:Jak zmodyfikować pojedynczy znak w ciągu, w Pythonie?

a = "hello" 
a[2] = "m" 

Obiekt "str" ​​nie obsługuje przypisania przedmiotu.

+0

możliwy duplikat [Zmiana jednego znaku w ciągu znaków w Pythonie?] (Http://stackoverflow.com/questions/1228299/change-one-character-in-a-string-in-python) – Wolf

Odpowiedz

12

Ciągi są niezmienne w języku Python. Można użyć listę znaków zamiast:

a = list("hello") 

Gdy chcesz wyświetlić wynik użyć ''.join(a):

a[2] = 'm' 
print ''.join(a) 
8

Spróbuj konstruowaniu listy od niego. Kiedy przejdziesz do konstruktora listy, będzie to turn it into a list (to trochę uproszczenie, ale zwykle działa).

a = list("hello") 
a[2] = m 

Możesz następnie dołączyć do niego ponownie za pomocą ''.join(a).

+1

Doskonała odpowiedź. – JoshD

10

W pythonie ciąg jest niezmienny. Jeśli chcesz zmienić jeden znak, będziesz musiał użyć slicing:

a = "hello" 
a = a[:2] + "m" + a[3:] 
+1

Przypuszczam, że kosztowałoby to więcej pamięci, jeśli jest to naprawdę duży ciąg, ponieważ musisz połączyć trzy inne ciągi w celu utworzenia nowego ciągu znaków, prawda? – Shane

+0

Och, tak! Jeśli chcesz wykonać cały szereg tego typu manipulacji, najlepiej jest użyć listy znaków. Chyba, że ​​masz już ciąg i po prostu chcesz zmienić jedną postać. Nawet wtedy prawdopodobnie tworzenie i modyfikowanie listy jest szybsze. – JoshD

+0

@Shane: Poniżej znajduje się odpowiedź na temat @ detly. –

3

to dlatego ciągi w Pythonie są niezmienne.

Powiązane problemy