Ten prosty kod, który po prostu próbuje zastąpić średniki (w pozycjach określonych i) dwukropkami, nie działa:
for i in range(0,len(line)):
if (line[i]==";" and i in rightindexarray):
line[i]=":"
Daje błąd
line[i]=":"
TypeError: 'str' object does not support item assignment
Jak mogę to obejść, aby zastąpić średniki dwukropkami? Korzystanie z zamiany nie działa, ponieważ ta funkcja nie przyjmuje indeksu - mogą istnieć średniki, których nie chcę zastępować.
Przykład
W ciągu znaków mógłbym mieć dowolną liczbę średników, np. „Hej!; Witam;!;”
Wiem, które z nich chcę zamienić (mam ich indeks w ciągu). Używanie zamiany nie działa, ponieważ nie mogę użyć z nim indeksu.
str.replace()
BIF?str.find()
zamiast tego, aby znaleźć pozycję średnika, a następnie użyj wycinania, aby wyodrębnić podciąg.Odpowiedzi:
Ciągi znaków w Pythonie są niezmienne, więc nie można ich traktować jako listy i przypisywać do indeksów.
Użyj
.replace()
zamiast tego:Jeśli chcesz zamienić tylko niektóre średniki, musisz podać więcej szczegółów. Możesz użyć wycinania, aby wyodrębnić sekcję ciągu do zastąpienia w:
Spowoduje to zastąpienie wszystkich średników w pierwszych 10 znakach ciągu.
źródło
Możesz zrobić to poniżej, aby zastąpić dowolny znak odpowiednim znakiem w danym indeksie, jeśli nie chcesz go używać
.replace()
źródło
Zamień ciąg w listę; wtedy możesz zmieniać znaki indywidualnie. Następnie możesz złożyć go z powrotem za pomocą
.join
:źródło
Jeśli chcesz zamienić pojedynczy średnik:
Havent jednak to przetestował.
źródło
line.replace(src,dst)
nie.line[:10].replace(src,dst) + line[10:]
robi, ale w znacznie mniejszym stopniu. Przypuśćmyline = ';'*12
. Twoje rozwiązanie zbuduje nowy ciąg 12 razy. Zaakceptowane rozwiązanie zrobi to raz.Powinno to obejmować nieco bardziej ogólny przypadek, ale powinieneś być w stanie dostosować go do swoich celów
Mam nadzieję że to pomoże
źródło
Nie można po prostu przypisać wartości do znaku w ciągu. Użyj tej metody, aby zamienić wartość określonego znaku:
Wyjście: In * ia
Ponadto, jeśli chcesz zamienić, powiedz * dla wszystkich wystąpień pierwszego znaku oprócz pierwszego znaku, np. string = gaworzenie wyjście = ba ** le
Kod:
źródło
Jeśli zastępujesz wartością indeksu określoną w zmiennej „n”, wypróbuj poniższe rozwiązania:
źródło
Co powiesz na to:
źródło
aby efektywnie używać metody .replace () na łańcuchu bez tworzenia oddzielnej listy, na przykład spójrz na listę nazw użytkowników zawierających ciąg znaków z białymi znakami, chcemy zastąpić białe znaki podkreśleniem w każdym z ciągów nazw użytkowników.
aby zamienić spacje w każdej nazwie użytkownika, rozważ użycie funkcji zakresu w Pythonie.
źródło
Aby zamienić znak w określonym indeksie, funkcja jest następująca:
gdzie s to łańcuch, n to indeks, a c to znak.
źródło
Napisałem tę metodę, aby zastępować znaki lub zastępować ciągi w określonym przypadku. wystąpienia zaczynają się od 0 (można to łatwo zmienić na 1, jeśli zmienisz opcjonalny argument inst na 1 i zmienną test_instance na 1.
źródło
Możesz to zrobić:
źródło
imiona = [„Joey Tribbiani”, „Monica Geller”, „Chandler Bing”, „Phoebe Buffay”]
usernames = []
o, p Joey_Tribbiani Monica_Geller Chandler_Bing Phoebe_Buffay
źródło