Как заменить определенный символ в строке python
Перейти к содержимому

Как заменить определенный символ в строке python

  • автор:

Замена одного символа на другой в строке

Задание такое: написать программу, которая заменяет символ 1 на символ 2.

я написал код, но он не работает. не могу понять почему

1 2 3 4 5 6 7
a = input("введи текст: ") i= 0 for i in range(0,len(a)): if a[i] == "1" : a[i] = "2" print(a)

написал еще один и он тоже не работает

1 2 3 4 5 6 7
a = input("введи текст: ") i= 0 for i in range(0,len(a)): if a[i] == "1" : a[i].replace("1","2") print(a)

и опять вопрос: почему ?!
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Замена одного символа на другой
Подскажите как заменить в строке(str) один символ на другой?. (Задача: Сформировать строку из 10.

Замена в строке одного символа на другой
Нужно Символы «2» заменить на строчный символы «f». Как я понял нужно сначала ввести эти символы а.

Замена одного символа на другой в строке
Условие такое: Дана символьная строка. Заменить все символы ‘!’ точками, кроме первого.

Замена в каждой строке одного заданного символа на другой заданный символ
ПОМОГИТЕ РЕШИТЬ ЗАДАЧУ)) Даны 2 строки до 80 символов. Необходимо Заменить в каждой сроке один.

93 / 93 / 38
Регистрация: 30.11.2017
Сообщений: 180

1 2 3
a = input("введи текст: ") a = a.replace("1","2") print(a)

4459 / 3212 / 1125
Регистрация: 21.03.2016
Сообщений: 7,949

Alex_121, строки неизменяемы! но можно получить новую строку вашим кодом в качестве учебного понятия действий

1 2 3 4 5 6 7 8 9
a = input("введи текст: ") nev = '' for i in range(len(a)): if a[i] == "1" : nev += "2" # nev = nev+"2" else: nev += a[i] print(nev)

87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Замена одного символа на другой
Продолжаю познания работы с текстовыми файлами. Пытаюсь заменить один символ на другой и вывести.

Замена одного символа на другой
Нужно заменить один символ на другой по нажима на кнопке. Например есть _ _ _ _ Нужно при нажатии.

Замена одного символа на другой
Всем привет! Имеется таблица, нужно в последнем (6м) столбце проверять, если стоит символ ".," то.

Замена только одного символа в строке
Нужно заменить только первый символ в строке, и только в том случае, если он вообще там есть. Суть.

Замена в строке одного символа на несколько цифр
Можете пожалуйста написать программу, которая заменяет один определенный символ на двухзначное и.

Как в PYTHON заменить символы в строке используя массив?

Есть строка. Например text = «Pantone 485 C»
Есть массив arr = [‘Pantone ‘, ‘ C’]
пробую a = text.replace(arr, «»)
не работает
В чём может быть проблема? Есть ли решение?

  • Вопрос задан более трёх лет назад
  • 15906 просмотров

1 комментарий

Простой 1 комментарий

sswwssww

Для начала скажите какой результат вы ожидали?
Решения вопроса 1

sswwssww

text = "Pantone 485 C" arr = ['Pantone ', ' C'] for x in arr: text = text.replace(x, "")

Ответ написан более трёх лет назад
Нравится 1 1 комментарий
domanskiy @domanskiy Автор вопроса
то что нужно
Спасибо
Ответы на вопрос 3

0xD34F

from functools import reduce a = reduce(lambda p, c: p.replace(c, ''), arr, text)

Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

adugin

Andrey Dugin @adugin Куратор тега Python
Решение «в лоб», без учёта нюансов:
re.sub(‘|’.join(arr), », text)
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

метод replace принимает первым параметром строку, а не список. если там что-то другое, то метод не понимает, чего вы от него хотите, и выдаёт ошибку. я тоже не понимаю, чего вы от него хотите. если хотите вхождения всех строк из списка заменить на «» , то пробегитесь по списку, применяя replace для каждого элемента.
и внимательнее читайте документацию в следующий раз.
и посмотрите в сторону регулярных выражений, возможно, они для исходной задачи подойдут лучше, чем мучить replace .

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python

Палиндромы leetcode, в VS все правильно, на сайте другой ответ, что делать?

  • 1 подписчик
  • 2 часа назад
  • 51 просмотр

Как заменить символ в строке по индексу?

Строки в Python неизменяемы, поэтому для этой операции нет встроенного метода. Вам придётся создать новую строку на основе исходной.

Наиболее быстрый способ — взять срез до и после необходимого символа:

i = 5 s = 'AABAABAAАA' result = s[:i] + 'A' + s[i+1:] # AABAAAAAАA 

Ещё вы можете преобразовать строку к списку. Список изменяемый, и вы можете перезаписать один из его элементов, а затем преобразовать список обратно в строку:

s = 'AABAABAAАA' li = list(s) li[5] = 'A' result = ''.join(li) # AABAAAAAАA 

Отслеживать
ответ дан 9 июн 2022 в 12:56
18.4k 5 5 золотых знаков 24 24 серебряных знака 48 48 бронзовых знаков

Тип bytes — это неизменяемая последовательность байтов. Каждый элемент такой последовательности может хранить целое число от О до 255, обозначающее код символа. Этот тип поддерживает боль- шинство строковых методов, однако при доступе по индексу возвра- щается целое число, а не символ.

Тип bytearray — это изменяемая последовательность байтов. Данный тип аналогичен типу bytes, но вы можете изменять элементы такой строки по индексу. Также этот тип содержит дополнительные методы, которые позволяют добавлять и удалять элементы.

s = bytearray('AABAABAAАA', 'utf-8') s[5] = bytes('A', 'utf-8')[0] print(str(s, 'utf-8')) 

Взято из Справочник PYTHON. Кратко, быстро, под рукой | Дубовик Е. В., Кольцов Д. М.

Замена вхождения подстроки в строке Python

Замена всех или n вхождений подстроки в заданной строке — довольно распространенная проблема манипуляций со строками и обработки текста в целом. К счастью, большинство этих задач упрощается в Python благодаря огромному набору встроенных функций, включая эту.

Допустим, у нас есть строка, содержащая следующее предложение:

The brown-eyed man drives a brown car. 

Наша цель — заменить слово «brown» на «blue» :

The blue-eyed man drives a blue car. 

В этой статье мы будем использовать функцию replace() , а также функции sub() и subn() с шаблонами для замены всех вхождений подстроки из строки.

replace()

Самый простой способ сделать это — использовать встроенную функцию — replace() :

string.replace(oldStr, newStr, count) 

Первые два параметра являются обязательными, а третий — необязательным. oldStr — это подстрока, которую мы хотим заменить на newStr . Стоит отметить, что функция возвращает новую строку с выполненным преобразованием, не затрагивая исходную.

string_a = "The brown-eyed man drives a brown car." string_b = string_a.replace("brown", "blue") print(string_a) print(string_b) 

Мы выполнили операцию над string_a , упаковали результат в string_b и распечатали их оба.

Этот код приводит к:

The brown-eyed man drives a brown car. The blue-eyed man drives a blue car. 

Опять же, строка в памяти, на которую указывает string_a , остается неизменной. Строки в Python неизменяемы, что просто означает, что вы не можете изменить строку. Однако вы можете повторно присвоить ссылочной переменной новое значение.

Чтобы, казалось бы, выполнить эту операцию на месте, мы можем просто переназначить string_a после операции:

string_a = string_a.replace("brown", "blue") print(string_a) 

Здесь новая строка, созданная методом replace() , присваивается переменной string_a .

Заменить n вхождений подстроки

А что, если мы не хотим изменять все вхождения подстроки? Что, если мы хотим заменить первые n?

Вот тут и появляется третий параметр функции replace() . Он представляет количество подстрок, которые будут заменены. Следующий код заменяет только первое вхождение слова «brown» на «blue» :

string_a = "The brown-eyed man drives a brown car." string_a = string_a.replace("brown", "blue", 1) print(string_a) 

И в консоли у нас будет:

The blue-eyed man drives a brown car. 

По умолчанию третий параметр настроен на изменение всех вхождений.

Вхождения подстроки в регулярных выражениях

Чтобы еще больше обострить проблему, предположим, что мы хотим не только заменить все вхождения определенной подстроки, но и заменить все подстроки, соответствующие определенному шаблону. Даже это можно сделать с помощью однострочного кода, используя регулярные выражения и модуль стандартной библиотеки re .

Регулярные выражения — сложная тема с широким спектром использования в информатике, поэтому мы не будем вдаваться в подробности в этой статье.

По сути, регулярное выражение определяет шаблон. Например, предположим, что у нас есть текст о людях, владеющих кошками и собаками, и мы хотим заменить оба термина словом «pet» . Во-первых, нам нужно определить шаблон, который соответствует обоим терминам, например — (cat|dog) .

Использование функции sub()

Разобравшись с шаблоном, мы собираемся использовать функцию re.sub() со следующим синтаксисом:

re.sub(pattern, repl, string, count, flags) 

Первый аргумент — это шаблон, который мы ищем (строка или объект Pattern ), repl это то, что мы собираемся вставить (может быть строкой или функцией; если это строка, обрабатываются любые escape-символы в ней обратной косой чертой) и string это строка, в которой мы ищем.

Необязательными аргументами являются count и flags , которые указывают, сколько вхождений необходимо заменить, и флаги, используемые для обработки регулярного выражения, соответственно.

Если шаблон не соответствует ни одной подстроке, исходная строка будет возвращена без изменений:

import re string_a = re.sub(r'(cat|dog)', 'pet', "Mark owns a dog and Mary owns a cat.") print(string_a) 

В консоле распечатается:

Mark owns a pet and Mary owns a pet. 
Сопоставление с шаблоном без учета регистра

Например, чтобы выполнить сопоставление с шаблоном без учета регистра, мы установим для параметра flag значение re.IGNORECASE :

import re string_a = re.sub(r'(cats|dogs)', "Pets", "DoGs are a man's best friend", flags=re.IGNORECASE) print(string_a) 

Теперь любая комбинация регистра «dogs» также будет включена. При сопоставлении шаблона с несколькими строками, чтобы избежать его копирования в нескольких местах, мы можем определить объект Pattern . У них также есть функция sub() с синтаксисом:

Pattern.sub(repl, string, count) 
Использование объектов шаблона

Давайте определим Pattern для кошек и собак и проверим пару предложений:

import re pattern = re.compile(r'(Cats|Dogs)') string_a = pattern.sub("Pets", "Dogs are a man's best friend.") string_b = pattern.sub("Animals", "Cats enjoy sleeping.") print(string_a) print(string_b) 

Что дает нам результат:

Pets are a man's best friend. Animals enjoy sleeping. 
Функция subn()

Также есть метод subn() с синтаксисом:

re.subn(pattern, repl, string, count, flags) 

Функция subn() возвращает кортеж со строкой и числом совпадений в строке поиска:

import re string_a = re.subn(r'(cats|dogs)', 'Pets', "DoGs are a mans best friend", flags=re.IGNORECASE) print(string_a) 

Кортеж выглядит так:

('Pets are a mans best friend', 1) 

Объект Pattern содержит аналогичную функцию subn() :

Pattern.subn(repl, string, count) 

И он используется очень похожим образом:

import re pattern = re.compile(r'(Cats|Dogs)') string_a = pattern.subn("Pets", "Dogs are a man's best friend.") string_b = pattern.subn("Animals", "Cats enjoy sleeping.") print(string_a) print(string_b) 
("Pets are a man's best friend.", 1) ('Animals enjoy sleeping.', 1) 

Вывод

Python предлагает простые функции для обработки строк. Самый простой способ заменить все вхождения данной подстроки в строке — использовать функцию replace() .

При необходимости модуль re стандартной библиотеки предоставляет более разнообразный набор инструментов, который можно использовать для решения более узких задач, таких как поиск шаблонов и поиск без учета регистра.

Источник:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *