Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 08.07.2022
Сообщений: 87

Удаление знаков препинания

12.07.2022, 13:31. Показов 1627. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Нашла функцию для удаления знаков препинания. Вот она.
Python
1
"".join(filter(str.isalnum, predl))
Вопрос такой. Скажите пожалуйста, этой функции не нужно присваивать имя? Она возращает строку без знаков препинания в ту же строку predl, что и была, верно?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.07.2022, 13:31
Ответы с готовыми решениями:

Дана строка символов, содержащая знаки препинания. Подсчитать какие и сколько знаков препинания содержит строка
Дана строка символов, содержащая знаки препинания. Подсчитать какие и сколько знаков препинания содержит строка. Буду очень благодарен...

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

Вернуть строку без знаков препинания
Написал функцию: def clean(text): """Вернуть строку 'text' без знаков препинания. Исключения: - TypeError: text -...

18
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
12.07.2022, 13:49
Цитата Сообщение от lena_torez Посмотреть сообщение
Скажите пожалуйста, этой функции не нужно присваивать имя?
Это не функция.

Цитата Сообщение от lena_torez Посмотреть сообщение
Она возращает строку без знаков препинания в ту же строку predl, что и была, верно?
Нет, создается новая строка, то бишь:

Python
1
predl = "".join(filter(str.isalnum, predl))
1
120 / 115 / 18
Регистрация: 05.08.2021
Сообщений: 503
12.07.2022, 13:53
Python
1
2
3
predl = 'et,ry?ryy.ry'
print("".join(filter(str.isalnum, predl)))
print(predl)
etryryyry
et,ry?ryy.ry
Вывод: исходная строка не меняется, создается копия строки
1
 Аватар для VistaSV30
987 / 331 / 79
Регистрация: 10.04.2012
Сообщений: 1,239
Записей в блоге: 4
12.07.2022, 14:01
Здесь isalnum - это метод.

Вот определение из учебника:
Методы и функции в Python, как и во многих других языках программирования это блок кода, обращение к которому возможно из других мест программы. Функции в языке Python вызываются так: functionName(argiments), а методы вызываются так: objectName.methodName(arguments).

С методом isalnum можно написать функцию для проверки строк палиндромов
Python
1
2
3
4
5
6
def is_palindrome(tx):
    t1 = ''.join(filter(str.isalnum, tx)).lower()
    return t1 == t1[::-1]
 
s = 'А, роза упала на лапу Азора!'
print(is_palindrome(s))
0
1 / 1 / 0
Регистрация: 08.07.2022
Сообщений: 87
12.07.2022, 14:13  [ТС]
Спасибо за ответ. Еще не проходила срезы, поэтому ваш вариант я учту на будующее)

Добавлено через 3 минуты
Спасибо. Да, я наверное не правильно назвала метод функцией, спасибо что поправили. Я почему просила, у меня сработало в том варианте, что я прислала. Без имени в начале. Вот я и подумала, что это тоже предложение. И еще, если вас не затруднит, можете дословно объяснить как работает эта строка? Ну я имею в виду слово "join", ну str - тип данных.

Добавлено через 4 минуты
И еще. Этот метод убирает не только знаки препинания, но и пробелы?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.07.2022, 14:17
Метод join() склеивает переданную туда последовательность, в промежутки вставляя строку, у которой он вызывается.
Дык на примере можно увидеть
Python
1
print(','.join(['a', 'b', 'c'])) # a,b,c
Метод filter() возвращает элементы переданной ему последовательности, подходящие под переданный ему же критерий. В данном случае - все символы, которые isalnum, т.е. буквы и цифры.
Цитата Сообщение от lena_torez Посмотреть сообщение
но и пробелы?
Дык
0
1 / 1 / 0
Регистрация: 08.07.2022
Сообщений: 87
12.07.2022, 14:28  [ТС]
А если убрать join, конструкция нарушится или только останутся пробелы? Я попробовала, но у меня ошибку вызвало, может синтаксис не верный.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.07.2022, 14:32
Перечитай еще раз - что делает джойн
0
1 / 1 / 0
Регистрация: 08.07.2022
Сообщений: 87
12.07.2022, 14:39  [ТС]
А что тогда в этой строке удаляет пробелы, сам метод?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.07.2022, 14:47
Елки-палки. Я ж написал - фильтр оставляет ТОЛЬКО буквы и цифры. Пробел - это буква или цифра?

Добавлено через 4 минуты
Что надо-то в конце концов? Просто удалить знаки препинания?
Python
1
2
3
import regex as re
 
print(re.sub(r'\p{P}', '', input()))
0
12.07.2022, 14:47

Не по теме:

Цитата Сообщение от iSmokeJC Посмотреть сообщение
буква или цифра
если выбирать из этих вариантов, то наверное больше буква чем цифра.

0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.07.2022, 14:48
Fudthhh,
0
1 / 1 / 0
Регистрация: 08.07.2022
Сообщений: 87
12.07.2022, 14:53  [ТС]
Спасибо) Извините, я просто не допоняла вас) не сердитесь. Метод оставляет ТОЛЬКО буквы и цифры) Я уже попробовала по-разному и немного разобралась. Без join, выдает вот: <filter object at 0x000002145D433EF0>)

Я вас конечно утомила, но подскажите как пользоваться тем, что вы написали ниже. Ну или хотя бы скажите, где про это почитать.
Цитата Сообщение от iSmokeJC Посмотреть сообщение
import regex as re
print(re.sub(r'\p{P}', '', input()))
1 - мне понятно, вызов библиотеки (может называется по-другому)
3 - а вот с печатью не понятно. Или эту последовательность просто надо запомнить?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.07.2022, 15:00
Нет, на данном этапе тебе это вообще не нужно. Ни понимать, ни запоминать. Только если бездумно использовать для своих целей.
А если ты действительно изучаешь, то прорабатывай варианты выше. Это будет куда как полезней.


Можно написать самопальный фильтр например
Python
1
2
3
s = input()
result = ''.join(i for i in s if i not in '!@#$%^&*,.[]()";:/\\+-=_')
print(result)
Убирает знаки препинания, оставляет буквы, цифры и пробелы
1
1 / 1 / 0
Регистрация: 08.07.2022
Сообщений: 87
12.07.2022, 15:01  [ТС]
Какие варианты выше? Не хочу показаться грубой, но что мне все пытаются объяснить как мне заниматься? Вы написали код, спасибо, мне он не понятен, я задаю вопрос, потому что мне интересно как это работает, вы мне пишете - тебе это не надо. Не хотите отвечать, дело ваше. Можно было бы посоветовать, где об этом найти информацию.
Спасибо за ответы. Всего хорошего)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
12.07.2022, 15:03
Вот. Хочешь как лучше, получается как всегда. Ну что ж, подскажу.
Регулярные выражения. Тебя ждет полоса препятствий... (с)
Удачи
0
1 / 1 / 0
Регистрация: 08.07.2022
Сообщений: 87
12.07.2022, 15:15  [ТС]
Вот) Спасибо большое) Хотя бы буду знать, где посмотреть) Всё знать невозможно, а вот знать, где посмотреть - вот это и есть знание)
0
712 / 351 / 120
Регистрация: 09.12.2020
Сообщений: 918
12.07.2022, 15:44
Цитата Сообщение от lena_torez Посмотреть сообщение
а вот знать, где посмотреть - вот это и есть знание)
сомнительное высказывание
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
12.07.2022, 21:09
Еще вариант:
Python
1
2
3
4
from string import punctuation as punk # :-)
s = input()
tr=s.maketrans({i:'' for i in punk})
print(s.translate(tr))
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.07.2022, 21:09
Помогаю со студенческими работами здесь

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

Список слов из строки, без знаков препинания
Вводится нормализованный текст, который кроме слов может содержать определенные знаки препинания. Программа строит список слов, знаки...

Подсчитать количество символов и знаков препинания в текстовом файле
Дан файл подсчитать количество всех символов и символов ,.!?

Проверка на палиндром без учета пробелов и знаков препинания (Python 3.0)
Проверка, является ли текст палиндромом, должна не только переворачивать слово и проверять его на идентичность исходному, но и ...

Создать текстовый файл. Подсчитать количество знаков препинания в нем
Создать текстовый файл. Подсчитать количество знаков препинания в нем.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru