Python-сообщество
- Начало
- » Python для новичков
- » Замена букв цифрами
#1 Июнь 16, 2018 04:28:14
cryptus Зарегистрирован: 2018-06-16 Сообщения: 1 Репутация: 0 Профиль Отправить e-mail
Замена букв цифрами
Привет всем! Недавно начал изучать Python и вот решил написать небольшую программку которая заменяет буквы на цифры по принципу телефона: (2 — a,b,c) (3-d,e,f) (4-g,h,i) и т.д. В голову пришёл только такой вариант (код ниже). Хотя программка и работает правильно, но мне кажется что код выглядет непрофессионально. Если другой более лёгкий и более короткий способ написания данной программы.
Заранее спасибо!
word = input("Enter the word: ") newWord = word.replace("a", "2") newWord1 = newWord.replace("b", "2") newWord2 = newWord1.replace("c", "2") newWord3 = newWord2.replace("d", "3") newWord4 = newWord3.replace("e", "3") newWord5 = newWord4.replace("f", "3") newWord6 = newWord5.replace("g", "4") newWord7 = newWord6.replace("h", "4") newWord8 = newWord7.replace("i", "4") newWord9 = newWord8.replace("j", "5") newWord10 = newWord9.replace("k", "5") newWord11 = newWord10.replace("l", "5") newWord12 = newWord11.replace("m", "6") newWord13 = newWord12.replace("n", "6") newWord14 = newWord13.replace("o", "6") newWord15 = newWord14.replace("p", "7") newWord16 = newWord15.replace("q", "7") newWord17 = newWord16.replace("r", "7") newWord18 = newWord17.replace("s", "7") newWord19 = newWord18.replace("t", "8") newWord20 = newWord19.replace("u", "8") newWord21 = newWord20.replace("v", "8") newWord22 = newWord21.replace("w", "9") newWord23 = newWord22.replace("x", "9") newWord24 = newWord23.replace("y", "9") newWord25 = newWord24.replace("z", "9") print(newWord25)
#2 Июнь 16, 2018 08:24:07
spikejke Зарегистрирован: 2018-02-12 Сообщения: 42 Репутация: 5 Профиль Отправить e-mail
Замена букв цифрами
Привет, я создал словарь с ключом буквы, а значение цифры. Затем в цикле проверяю каждый элемент методом isalpha если элемент является алфавитным, заменяем его и перезаписываем слово.
numwords = "a":"1", "b":"2", "c":"3"> word = "1a2b3c" for letter in word: if letter.isalpha(): word = word.replace(letter, numwords[letter]) print(word) # Вывод 112233
#3 Июнь 16, 2018 08:35:42
doza_and От: Зарегистрирован: 2010-08-15 Сообщения: 4138 Репутация: 252 Профиль Отправить e-mail
Замена букв цифрами
:):) а так профессиональнее?
tbl = i:(i-ord('a'))//3+ord("2") for i in range(ord('a'),ord("z")+1)> word="brtayz" print(word.translate(tbl)) 2782::
На самом деле важна не “профессиональность” а понятность
#4 Июнь 17, 2018 02:21:45
py.user.next От: Зарегистрирован: 2010-04-29 Сообщения: 9629 Репутация: 839 Профиль Отправить e-mail
Замена букв цифрами
>>> '1-800-ABC-ZYX-CALL-FREE'.lower().translate(str.maketrans('abcdefghijklmnopqrstuvwxyz', '22233344455566677778889999')) '1-800-222-999-2255-3733' >>>
Отредактировано py.user.next (Июнь 17, 2018 02:25:23)
Заменить каждую букву на цифру
Заменить каждую букву на число, пробел заменить 0, другие символы не изменять. Числа соответствуют порядковому номеру буквы в алфавите. 1 – a, 2 – b, 3 – c,…, 26 – z. Числа выводить через пробел.
Входные данные
Have a nice day!
Результат работы
8 1 22 5 0 1 0 14 9 3 5 0 4 1 25 !
помогите пожалуйста!
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
В заданной строке заменить каждую русскую букву символом «*»
Попытался сделать код, но выводит ошибку что делать a = Str = input() Str = list(Str) for i in.
Заменить прописной каждую первую букву слов, начинающихся с гласной буквы
Задание:В заданной строке, состоящей из набора слов, разделенных пробелами,заменить прописной.
Дан список, заменить каждую букву «а» цифрой 1
Дан список mlist = . Замените каждую букву "а" цифрой 1.

В каждом слове заменить первую букву на цифру 1
Привет всем, у меня возникла сложность с заданием на питоне. Помогите пожалуйста, с меня плюсик).
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,186

Сообщение было отмечено molchat doma как решение
Решение
1 2 3 4 5 6 7 8
import string, re letters = string.ascii_letters s = 'Have a nice day!' s = re.sub(r'[\s!]+', '', s) for i in s: print(letters.index(i)+1, end=' ')
Добавлено через 6 минут
1 2 3 4 5 6 7 8 9 10
import string, re letters = string.ascii_letters s = 'Have a nice day!'.lower() s1 = re.sub(r'[\s!]+', '', s) for i in s1: print(letters.index(i)+1, end=' ') print(s[-1])
Добавлено через 20 секунд
подправил мелочи
Добавлено через 8 минут
1 2 3 4 5 6 7 8 9 10 11
import string, re letters = string.ascii_letters s = 'Have a nice day!'.lower() s1 = re.sub(r'[\s]+', '0', s) for i in s1[:-1]: print(i, end=' ') if i == '0'\ else print(letters.index(i)+1, end=' ') print(s[-1])
Покинул форум
3670 / 1481 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
' '.join([str(ord(x)-96) if 97ord(x)122 or x == '`' else x for x in 'Have a nice day!'.lower().replace(' ', '`')])
Регистрация: 01.02.2022
Сообщений: 63
а если мне нужно ввести свои значения,а не Have a nice day?
4459 / 3212 / 1125
Регистрация: 21.03.2016
Сообщений: 7,949
molchat doma, а если почитать учебник? самое начало. там как раз начинается с ввода и печати.
Am I evil? Yes, I am!
![]()
![]()
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624
Сообщение от Пифагор 
подправил мелочи
Еще подправь ))
Сообщение от Пифагор 
— один символьный класс в диапазоне. Бессмысленно и лишняя работа движку.
Чем \s+ не угодил?
2169 / 1652 / 840
Регистрация: 10.01.2015
Сообщений: 5,186
iSmokeJC, я re просто убрать забыл. Изначаль планировал ! заодно убрать, но потом иначе сделал, так что вместо тяжелых регулярок replace тут больше подойдет.
Регистрация: 01.02.2022
Сообщений: 63
я новичек,из способов ввода знаю только int,input,map и list,но я не знаю какой именно можно использовать
1 2 3 4 5 6 7 8 9 10 11
import string, re letters = string.ascii_letters s = 'Have a nice day!'.lower() s1 = re.sub(r'[\s]+', '0', s) for i in s1[:-1]: print(i, end=' ') if i == '0'\ else print(letters.index(i)+1, end=' ') print(s[-1])
2738 / 1219 / 438
Регистрация: 21.11.2021
Сообщений: 2,474
s = input('Введите предложение на английском: ') print( *list( map( lambda x: 0 if x==' ' else ord(x.lower())-ord('a')+1 if x.isalpha() else x, s ) ) )
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Каждую латинскую букву, которая находится перед первым символом *, заменить на точку
Если в заданном тексте нет символа *, то оставить его без изменения. В противном случае каждую.
Каждую строчную латинскую букву заменить на цифру 1
Дан текст. Если в тексте нет символа *, то оставить этот текст без изменений. Если же нет, то.

В строке заменить каждую цифру на букву, которая стоит слева от этой цифры
Ввести строку, состоящую из маленьких русских букв и цифр, начинающуюся с буквы, и заменить каждую.
Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–»
Задание: Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–».
Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–»
Ввести строку с клавиатуры. Вывести средний символ строки. Поменять каждую согласную русскую букву.

Каждую чётную цифру числа заменить на 0, а каждую нечётную на 1
с клавиатуры вводится длинное целое число не менее 50 цифр. Каждую чётную цифру числа заменить на.

Заменить в тексте каждую цифру на следующую по величине цифру
Дан текстовый файл f. Заменить в тексте каждую цифру на следующую по величине цифру (‘9’ заменить.
Как заменить буквы на звездочки(*) и цифры на 0. Python?

А можете показать список и то, как пытались решить?
Без примера можно долго гадать, но вряд-ли получите внятный ответ.
Решения вопроса 1

Python-разработчик
Допустим, дан список символов — строка s:
s = "Lorem ipsum dolor sit amet, consectetur adipiscing elit 76 111 114 101 109 32 105 112 115 117 109"
Первый способ замены — использование специальных методов строк для проверки, к какой категории символов относится символ, и генератора:
repl_s = "".join("0" if i.isdigit() else "*" if i.isalpha() else i for i in s)
Второй способ — использовать str.translate:
import string table = str.maketrans( | ) repl_s = s.translate(table)
Обратите внимание, что это будет работать только для символов из таблицы ASCII. Если потребуется поддержка Юникода, то нужно будет передать свои наборы букв и цифр вместо string.ascii_letters и string.digits.
Третий способ — использовать регулярные выражения и re.sub:
import re repl_s = re.sub(r'[a-zA-Zа-яА-ЯёЁ]', '*', re.sub(r'\d', '0', s))
"***** ***** ***** *** ****, *********** ********** **** 00 000 000 000 000 00 000 000 000 000 000"
Замена символа в строке в Python — replace и другие методы
Строка в Питоне относится в неизменяемому типу данных — после создания не получится что-то поменять в ней. Поэтому замена нескольких символов в Python относится к одним из самых популярных операций при работе с текстовыми данными. В статье мы расскажем о методе String replace — как работает функция, что нужно сделать, что заменить один символ на другой. Раскроем особенности и других способов для замены символа в строке в Python, используя примеры.
Строками в Python называют упорядоченную последовательность символов. Их используют для хранения и представления информации. С помощью строк можно описать то, что представлено в текстовой форме. Их также можно складывать между собой и извлекать последовательность цифр или букв из заданного промежутка. Но вот редактировать данные не получится. Существуют определённые методы изменения данных, которые быстро помогают заменить первый или последний символ в строке, если это необходимо. Используя их, также можно поменять и другие символы.
Метод replace() в Python
Функция или метод replace() в Python используется для замены всех вхождений подстроки или строки полностью. Он возвращает новую строку, заменяя указанные символы обновлёнными значениями. String replace обладает таким синтаксисом:
str.replace(old, new[, count])
- String: строка, в которой нужно поменять символ или изменить подстроку.
- Old: символ или подстрока, требующая подмены.
- New: новая строка, на которую надо заменить найденную выше подстроку или символы.
- Count (необязательный аргумент): то количество замен, которые необходимо выполнить. Без указания аргумента все вхождения будут заменены.
Хотите стать Python-разработчиком, но не знаете, с чего начать? Онлайн-курсы программирования — всегда хороший вариант для старта. Лучшие курсы с сайта tutortop:
- «Python-разработчик с нуля» от Skypro
- «Разработчик на Python» от Eduson Academy
- «Python-разработчик с нуля» от Нетологии
Сейчас мы дарим 10 000 ₽ на обучение в любой из школ-партнёров, представленных на сайте tutortop.
Получите онлайн-курсы стоимостью 20 000 ₽ абсолютно бесплатно и промокод 10 000 ₽ на обучение.
Нажимая на кнопку «Получить», я соглашаюсь на обработку моих персональных данных.
Спасибо! Мы получили вашу заявку. Скоро с вами свяжемся.
Пример применения метода replace() для замены символа в строке:
Этот параметр также можно использовать для изменения слов в строке:
g = ‘Python is my favorite programming language. I love Python!’
new_g = g.replace(‘Python’, ‘PHP’)
# ‘PHP is my favorite programming language. I love PHP!’
Вы можете проверить replace на умение заменять сразу несколько букв и чисел одновременно. Спойлер — он с этим справится. В примере мы заменяем все вхождения a, b и c на символ y:
new_g = g.replace(‘a’, ‘y’).replace(‘b’, ‘y’).replace(‘c’, ‘y’)
Доступно и изменение только первого или только последнего символа или слова. Сделать это довольно просто:
g = ‘Python is my favorite programming language. I love Python!’
new_g = g.replace(‘Python’, ‘PHP’, 1)
# ‘PHP is my favorite programming language. I love Python!’
Поиск и замена нескольких значений:
names = [‘Anna’, ‘Emma’, ‘Oleg’, ‘Dmitriy’]
# в новый список записываем элементы начального списка, измененные благодаря replace
new_list = [_.replace(«A», «i», ) for names]
# Вывод: [InnI’, ‘Emmi’, ‘Oleg’, ‘Dmitriy’]
Функцию replace используют чаще других — менять символы в строках можно разными способами, а также выставлять ограничения для количества замен в коде. Но есть и другие методы, которые тоже подойдут для осуществления этой операции в Питоне — о них расскажем ниже.
В нашем блоге есть полезные статьи для Python-разработчиков, которые находятся в процессе обучения или совершенствуют свои навыки по созданию программ — например, материал о функциях append() и extend() для добавления элементов в список, или статья про установку Python на компьютер.

Метод translate() для замены символа в Питоне
Вы можете выполнять замены, используя таблицу перевода символов. В этом плане translate полезен для изменения нескольких букв или цифр или исполнения более сложных и составных операций с использованием различных правил.
- String: это исходная строка, где надо поменять символы
- Table: это таблица перевода текстовых данных — это может быть словарь или объекта вроде str.maketrans, созданный с использованием метода str.maketrans().
- Deletechars (необязательный аргумент): строка с символами, которые необходимо убрать из исходной строки.
Как translate помогает заменить символы в строке:
# Создание таблицы перевода символов
# Замена символа «,» на «!» с использованием таблицы перевода
В этом примере таблица перевода создана с помощью метода str.maketrans() — указана символ «,» как символ для изменения и символ «!». Этот метод позволяет выполнить замену именно в исходной строке. Есть ещё метод maketrans(), который создаёт таблицу сопоставления между первым символом и заменой для него.
Описанные методы схожи по функционалу, но всё же отличаются друг от друга. Например, translate() может изменить лишь одиночные символы в строке, а replace() позволяет заменять целые строки различной длины. Также он может поменять нескольких букв за один вызов, replace() заменяет только одну подстроку за раз. Нельзя точно сказать, какой из этих вариантов лучше — для каждой из задач подходит свой метод. Но если вам нужно заменить несколько цифр или букв, лучше использовать translate(). Возможности replace() широки, в тому же функция выигрывает в оптимизации времени.
Если ваша цель — стать программистом, наша подборка топовых курсов поможет вам достичь успеха и реализовать свои профессиональные амбиции в этой области.
Регулярные выражения для замены символов в строке
Ещё один вариант — регулярные выражения или Regular Expressions. Этот инструмент по работе с текстовыми данными пользуется широкой популярностью и также применяется для перемены символов. Чтобы поменять символ или подстроку можно воспользоваться функцией re.sub() из модуля re.
re.sub(шаблон, замена, строка)
- Шаблон: регулярное выражение, указывающее на символы, подстроки, которые необходимо найти в строке для изменения.
- Замена: строка, на которую будут заменены найденные символы или подстроки.
- Строка: стартовый вариант в котором меняются символы.
# Замена символа «,» на «!» — регулярное выражение

Итоги
В строки в языке программирования Python нельзя внести изменения просто так — для этого нужно использовать специальные методы. В статье мы рассказали о самых простых и популярных из них — replace, translate и функции re.sub(). Выбор наиболее подходящего варианта зависит от задачи, которая стоит перед вами — замена нескольких символов, замена подстроки или ограничение количества замен для более точного результата. Перед использованием программы рекомендуем изучить политику конфиденциальности по ссылке.
Анна Уженкова
Копирайтер. Увлекается литературой и любит разбираться в сложных вещах. В работе ценит сам процесс — тексты, это не просто тексты, а возможность на что-то повлиять. Среди тем, которые нравятся, — образование, психология, IT.
