Перейти к содержимому

Как оставить только буквы в строке python

  • автор:

ОСТАВИТЬ В СТРОКЕ ТОЛЬКО БУКВЫ PYTHON

Довольно распространенной задачей в программировании является удаление из строки всех символов, кроме заданных. Например, допустим, что нам нужно оставить в строке только символы ‘p’, ‘y’, ‘t’, ‘h’, ‘o’, ‘n’ (в независимости от регистра), а все остальные символы удалить. В Python это можно сделать несколькими способами.

Способ 1: использование цикла for

string = ‘A programming language is Python’result = »for char in string: if char.lower() in ‘python’: result += charprint(result)

Способ 2: использование генератора списков

string = ‘A programming language is Python’result = ».join([char for char in string if char.lower() in ‘python’])print(result)

Способ 3: использование регулярных выражений (модуль re)

import restring = ‘A programming language is Python’result = re.sub(‘[^pythonPYTON]’, », string)print(result)

Все три способа дают одинаковый результат: ‘rogrampngugsiyPytN’. Эти способы могут быть также использованы для удаления любых других символов из строки.

Python l Извлечение цифр из строки ( поиск чисел в строке)

Python Задача: Подсчитать и вывести количество гласных

3 способа извлечь буквы из буквенно-цифровой строки на python (питон)

9.3 Заглавные буквы. \

Уроки Python / Как найти символ в строке

Python с нуля. Урок 7 — Работа со строками

Урок 10 Строки: индексы и срезы Python

9 Cтроки и операции над ними Python

Решаю простые задачки на Python с сайта Codewars

Сортировка слов в строке — Python задачи с технических собеседований

BLGPG-6432F8DBCF80-24-06-17-20

Новые материалы:

  • Coursera основы программирования на python
  • Планшет для программирования python
  • Python функция лямбда
  • Bulk create django пример
  • Python шифр хилла
  • Метод config python tkinter
  • Python какое слово зарезервировано для обозначения анонимной функции
  • Не делится на 3 python
  • Хлебные крошки django
  • Asdict в python
  • Python как словарь превратить в список
  • Круговая диаграмма xlsxwriter python

Метод str.isalpha() в Python, строка состоит только из букв

Проверяет, что строка состоит только из буквенных символов

Синтаксис:
str.isalpha() 

Внимание! Ссылки для тех, кто ищет:

  • как можно проверить наличие/вхождение определенного символа/буквы/подстроки в строке,
  • узнать порядковый индекс определенного символа/буквы/подстроки в строке,
  • сколько раз встречается определенный символ/буква/подстрока в строке.
Параметры:
Возвращаемое значение:
  • bool , True — если строка содержит только буквы
Описание:

Метод строки str.isalpha() возвращает True , если все символы в строке str являются буквенными и есть хотя бы один символ (строка не пустая и не состоит из одного пробела), в противном случае False .

Буквенные символы — это символы, определенные в базе данных символов Юникода как “буква”. То есть, те символы, у которых общее свойство категории является одним из Lm , Lt , Lu , Ll или Lo . Обратите внимание, что это определение отличается от понятия “Алфавитный”, определенного в стандарте Unicode.

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

>>> ''.isalpha() # False >>> ' '.isalpha() # False >>> '123'.isalpha() # False >>> 'abcABC'.isalpha() # True >>> '123abc'.isalpha() # False >>> '123 abc'.isalpha() # False >>> '123-abc'.isalpha() # False 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Метод str.capitalize(), первая буква в строке заглавная
  • Метод str.casefold(), сворачивает регистр строки
  • Метод str.center(), выравнивает строку по центру
  • Метод str.count(), считает совпадения в строке
  • Метод str.encode(), преобразует строку в байты
  • Метод str.endswith(), совпадение с концом строки
  • Метод str.expandtabs(), меняет табуляцию на пробел
  • Метод str.find(), индекс первого совпадения в строке
  • Метод str.format(), форматирует строку
  • Метод str.format_map()
  • Метод str.index(), индекс первого совпадения подстроки
  • Метод str.isalnum(), строка состоит из цифр и букв
  • Метод str.isalpha(), строка состоит только из букв
  • Метод str.isascii(), все символы в строке являются ASCII
  • Метод str.isdecimal(), проверяет строку на десятичное число
  • Метод str.isdigit(), строка состоит только из цифр
  • Метод str.isidentifier() проверяет строку на идентификатор Python
  • Метод str.islower( ), проверяет строку на нижний регистр
  • Метод str.isnumeric(), проверяет строку на числовые символы
  • Метод str.isprintable(), проверяет на доступность для печати
  • Метод str.isspace(), является ли строка пробелом
  • Метод str.istitle(), проверяет наличие заглавных букв в словах
  • Метод str.isupper(), проверяет строку на верхний регистр
  • Метод str.join(), объединяет список строк
  • Метод str.ljust(), ровняет строку по левому краю
  • Метод str.lower(), строку в нижний регистр
  • Метод str.lstrip(), обрезает символы в начале строки
  • Метод str.maketrans(), таблица символов для str.translate()
  • Метод str.partition(), делит строку по первому совпадению
  • Метод str.removeprefix(), удаляет префикс строки
  • Метод str.removesuffix(), удаляет суффикс строки
  • Метод str.replace(), меняет подстроку/символ в строке
  • Метод str.rfind(), индекс последнего совпадения подстроки
  • Метод str.rindex(), индекс последнего совпадения в строке
  • Метод str.rjust(), ровняет строку по правому краю
  • Метод str.rpartition(), делит строку по последнему совпадению
  • Метод str.rsplit(), делит строку справа
  • Метод str.rstrip(), обрезает символы на конце строки
  • Метод str.split(), делит строку по подстроке
  • Метод str.splitlines(), делит текст по символу ‘\n’
  • Метод str.startswith(), совпадение с началом строки
  • Метод str.strip(), обрежет строку с обоих концов
  • Метод str.swapcase(), сменит регистр символов в строке
  • Метод str.title(), каждое слово с заглавной буквы
  • Метод str.translate(), транслирование строки
  • Метод str.upper(), переведет строку в верхний регистр
  • Метод str.zfill(), дополнит строку нулями
  • Форматирование строк в стиле printf
  • F-string. Форматированные строки

В списке нужно оставить только буквы

Author24 — интернет-сервис помощи студентам

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

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

Оставить в списке ТОЛЬКО уникальный элемент
Я хочу убрать абсолютно все дублирующиеся элементы списка Ввод: a = Вывод 4 То есть.

Регулярное выражение, нужно оставить только заглавные буквы которые стоят по две заглавных
Регулярное выражение, нужно оставить только заглавные буквы которые стоят по две заглавных, а если.

(Нужно на четверг!) В предложении в словах где буквы встречаются более 2 раз подряд оставить только удвоение
В предложении в словах где буквы встречаются более 2 раз подряд оставить только удвоение. Код.

4963 / 3311 / 1145
Регистрация: 21.03.2016
Сообщений: 8,115

Лучший ответ

Сообщение было отмечено sashkouuu как решение

Решение

1 2 3 4
list_1 = ['R', 'E', 'D', 'I', 'H', 'U', 'P', 'S', '.', 'J', 'Q', 'X', 'O', 'G', 'B', ';', ',', 'F', ' ', 'A', 'M', 'C', 'L', 'N', 'V', 'T'] list_1 = [i for i in list_1 if i.isalpha() == True] print(list_1) ['R', 'E', 'D', 'I', 'H', 'U', 'P', 'S', 'J', 'Q', 'X', 'O', 'G', 'B', 'F', 'A', 'M', 'C', 'L', 'N', 'V', 'T']

Регистрация: 10.03.2016
Сообщений: 17
Огромное спасибо!
141 / 141 / 38
Регистрация: 20.02.2012
Сообщений: 597

list_1 = [i for i in list_1 if i.isalpha() == True]

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

Оставить в списке только числа
Ребят, помогите. Есть список, в котором содержатся строковые элементы, как можно из него составить.

Оставить в списке только первые вхождения одинаковых элементов
В составе программы описать функцию, которая оставляет в списке только первые вхождения одинаковых.

оставить в списке только первые вхождения одинаковых элементов C++
Дан список строк. Оставить в списке только первые вхождения одинаковых элементов.

Оставить в списке только первые вхождение одинаковых элементов
Дан список строк. Написать подпрограмму, которая оставляет в списке только первые вхождения.

Оставить в списке только первые вхождения одинаковых элементов
Оставить в списке только первые вхождения одинаковых элементов \ нужна вот эта функция только я не.

Оставить в списке только первые вхождения одинаковых элементов
Дан список L, элементы которого являются действительными числами. Оставить в списке только первые.

Или воспользуйтесь поиском по форуму:

Очистка текста с помощью Python. Часть 1

Возьмем простейшую ситуацию, когда вы спарсили некоторые данные с Ф.И.О., номерами телефонов, email и именем пользователя с какого-либо сайта. Однако пользователи не особо любят соблюдать правила заполнения полей. Потому, иногда в Ф.И.О. присутствуют числа и различные символы, которые в дальнейшем затруднят поиск по таким данным. Да и номера телефонов могут быть записаны вразнобой. А потому, необходимо привести их к какому-то общему знаменателю. Следовательно, напрашивается логический вывод – данные необходимо очистить. Вот этим мы и займемся в данной статье.

Очистка текста с помощью Python. Часть 1 Python, IT, Программирование, Программист, Рекомендации, Разработка, Длиннопост

Я долгое время не обращал внимания на встроенные функции для фильтрации символов и пользовался простым «replace». Однако, при таком методе всех символов, которые необходимо заменить, учесть просто невозможно, так как их может быть не одна сотня. Тем не менее, в python уже есть встроенное средство, которое позволит нам оставить только буквы, убрав все остальные символы — isalpha(). Он возвращает True, если символ является алфавитным. Если же нет, возвращается False. Также, с помощью метода isdecimal() можно убрать все буквы и символы, кроме цифр. Ну, а если наличие цифр и букв критично, а вот символы желательно убрать, можно воспользоваться методом isalnum().

Очистка строк от символов и цифр

Давайте же перейдем от слов к делу и напишем небольшую функцию, которая будет производить необходимые операции. Предположим, что у нас есть строка с Ф.И.О., которую необходимо очистить. Возьмем что-то вымышленное и добавим в него цифры и символы.

Например: Дьяченко-Волобуев))#90= Олег владиmирович52415

Как видим, здесь всего хватает. Это не предел. Встречается еще и похуже. Итак, начнем с того, что создадим функцию fio_normalize(fio: str, ascii_l: bool) -> str, которая будет принимать на вход текст, и возвращать его в очищенном виде.

Иногда вместо Ф.И.О. встречаются строки, которые содержат спам. То есть, в них содержится ссылка. Потому, для начала проверим, есть ли «http» в строке. Если есть, чистить дальше не имеет смысла и нужно просто возвратить пустое значение.

 if "http" in fio or "https" in fio or "Http" in fio or "Https" in fio: return ""

Также, в строке может содержаться тире. Ведь фамилия может быть составной, что-то вроде: Петров-Водкин. Потому, нужно проверить, есть ли тире в строке. Если в начале и конце, удалить. Затем проверить, есть ли в самой строке и если есть, заменить на слово. Это нужно для того, чтобы не удалить символ методом isalpha().

 if fio.startswith("-") or fio.endswith("-"): fio = fio.strip("-").strip() if "-" in fio: fio = fio.replace("-", "тирре")

Теперь, собственно, строка подготовлена для удаления символов и цифр. Поэтому, выполняем данную операцию и заменяем слово, на которое мы заменили «-».

fio = "".join(x for x in fio if x.isalpha() or x == " ").strip().replace("тирре", "-")

Еще, в строке может присутствовать транслитерация. Это когда русские буквы заменены на английские. Например: Petrov. В данном случае может помочь библиотека «transliterate». Однако, сильно надеяться на нее не стоит, так как разные люди пишут разные окончания по разному. И потому, слово может быть просто искажено. Слегка. И для человека не существенно. Но вот для поиска уже проблема. Тем не менее, попытаться выполнить транслитерацию стоит. Ведь может и повезти. Потому устанавливаем модуль «transliterate» с помощью команды в терминале:

pip install transliterate

и импортируем в наш скрипт:

from transliterate import translit

Однако, прежде чем проводить транслитерацию, следует понять, является ли слово из английских букв. Для этого мы будем использовать счетчик и библиотеку string, а точнее ее метод ascii_letters. После чего сравним полученное число в количеством символов в строке. И если оно совпадает, значит данное слово нуждается в транслитерации.

Однако, это еще не все. Иногда попадается такая веселая штука, когда на первый взгляд строка написана по-русски. Но, когда приглядишься, понимаешь, что некоторые символы в ней заменены на английский буквы. Вот их тоже надо вычистить. Например: «н» может быть заменено на «h».

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

if ascii_l and ascii_count == len(fio): fio = translit(fio, "ru") elif ascii_l: temp = [] for x in fio: temp.append(replacer(x)) if x in string.ascii_letters else temp.append(x) fio = "".join(temp)

Следующее, что нужно сделать, это написать каждое слово в Ф.И.О. с заглавной буквы. А также учесть наличие тире в составной фамилии. Потому, напишем еще небольшой кусочек кода.

fio = " ".join(x.strip().capitalize() for x in fio.split()) lst = [] for x in fio.split(): if "-" in x: lst.append("-".join(z.capitalize() for z in x.split("-"))) else: lst.append(x) fio = " ".join(lst)

Так как у нас Ф.И.О., то оно должно содержать только три слова. Сейчас не берем в расчет не совсем традиционные написания. Поэтому нужно сделать проверку на количество слов в строке. И если их больше трех, обрезать до нужного количества.

Еще нужно проверить, чтобы строка была не длиннее 50 символов. Конечно для Ф.И.О. это редкость. Но бывает и такое. Потому, оставляем его для заполненности, но обрежем до 50 символов. Почему? Дело в том, что если вы добавляете данные в БД SQLite, то это не имеет значения. А вот уже при добавлении в MongoDB и последующее создание индексов, мы получим ошибку на количество символов в индексируемом поле.

 if len(fio.split()) > 3: fio = " ".join(fio.split()[0:3]) if len(fio) > 50: fio = fio[:51]

Ну и возвращаем обработанную строку из функции. Или пустоту, если строка пуста.

return fio if fio else ""

Полный код функции очистки строки

def fio_normalize(fio: str, ascii_l=True) -> str: if "http" in fio or "https" in fio or "Http" in fio or "Https" in fio: return "" if fio.startswith("-") or fio.endswith("-"): fio = fio.strip("-").strip() if "-" in fio: fio = fio.replace("-", "тирре") fio = "".join(x for x in fio if x.isalpha() or x == " ").strip().replace("тирре", "-") ascii_count = 0 for xz in fio: if xz == " ": ascii_count += 1 ascii_count += sum(1 for x in xz if x in string.ascii_letters) if ascii_l and ascii_count == len(fio): fio = translit(fio, "ru") elif ascii_l: temp = [] for x in fio: temp.append(replacer(x)) if x in string.ascii_letters else temp.append(x) fio = "".join(temp) fio = " ".join(x.strip().capitalize() for x in fio.split()) lst = [] for x in fio.split(): if "-" in x: lst.append("-".join(z.capitalize() for z in x.split("-"))) else: lst.append(x) fio = " ".join(lst) if len(fio.split()) > 3: fio = " ".join(fio.split()[0:3]) if len(fio) > 50: fio = fio[:51] return fio if fio else ""

Теперь нужно еще поговорить о функции, с помощью которой мы будем заменять те самые вхождения английских букв в русские слова. Создадим функцию def replacer(txt: str) -> str, которая на вход получаем символ и возвращает уже замененный, если он есть в таблице замены.

def replacer(txt: str) -> str: symbols = ("ahkbtmxcepAHKBTMXCEP", "анквтмхсерАНКВТМХСЕР") tr = return txt.translate(tr)

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

А на этом, пожалуй, все.

Спасибо за внимание. Надеюсь, данная информация будет вам полезна

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

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