Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
26 / 10 / 0
Регистрация: 26.11.2018
Сообщений: 82

Re.split()

13.05.2019, 09:49. Показов 4764. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, ребят!

Не могу понять, почему в представленном ниже коде не убирается знак '!' в конце предложения!?

Python
1
2
3
4
5
6
import re
 
 
s = 'sdf! lkj!! lkj i, lkj. sdf) lkj!'
r = re.split(r'\W*\s', s)
print(r)
=> ['sdf', 'lkj', 'lkj', 'i', 'lkj', 'sdf', 'lkj!']

У меня цель - разделить строку не только по пробелам, но и отсечь знаки препинания и другие, не имеющие к смыслу строки знаки.

Спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.05.2019, 09:49
Ответы с готовыми решениями:

split()
Можно ли сплутовать по пустой строке сплитовать пустую строку? Если да, то как это сделать?

Split('%')
здравствуйте, сплит, вещь хорошая, но с строки сразу делает массив, хотел заюзать import re text = ';%повлек%ли% р%ад%о%сть;' #...

lambda и split
str1 = "13.07 +15" str2 = "12.05 +20" str3 = "11.05 +25" str1M = str1.split(' ') str2M = str2.split(' ') str3M = str3.split(' ') ...

5
60 / 86 / 16
Регистрация: 25.03.2019
Сообщений: 235
13.05.2019, 13:02
Цитата Сообщение от 7esoterik7 Посмотреть сообщение
Не могу понять, почему в представленном ниже коде не убирается знак '!' в конце предложения!?
Потому, что под шаблон \W*\s попадает строка, заканчивающаяся пробелом. Если в конце строки нет пробела, то под регулярное выражение она не попадает. Вот так попробуйте:
Python
1
r = re.split(r'\W{1,}\s?', s)
1
Эксперт Python
1356 / 653 / 207
Регистрация: 23.03.2014
Сообщений: 3,057
13.05.2019, 18:02
Лучший ответ Сообщение было отмечено 7esoterik7 как решение

Решение

Python
1
2
3
4
5
6
7
8
9
10
import  re
def reg(mstr):
    res=re.sub(r'[^\w\s]', '', mstr)
    print(res)
    return  res
 
if __name__ == '__main__':
    mstr=input()
 
    reg(mstr)
1
26 / 10 / 0
Регистрация: 26.11.2018
Сообщений: 82
13.05.2019, 18:27  [ТС]
Yuri197, в вашем варианте последним элементом проскакивает пустая строка ''.

Dax, в вашем варианте можно дополнить обычным split-ом и получить список слов, который мне необходим. Сорри, что не сказал про возврат списка, а не строки.
0
60 / 86 / 16
Регистрация: 25.03.2019
Сообщений: 235
13.05.2019, 19:23
Цитата Сообщение от 7esoterik7 Посмотреть сообщение
Yuri197, в вашем варианте последним элементом проскакивает пустая строка ''.
Это изначально ваш вариант. Только квантификатор * (0 и больше символов) я заменил на квантификатор {1,} (один и больше символов), чтобы исключить ошибку. И добавил знак вопроса после символа пробела, то есть символ пробела может в строке быть, а может и отсутствовать.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
13.05.2019, 19:37
Цитата Сообщение от 7esoterik7 Посмотреть сообщение
У меня цель - разделить строку не только по пробелам,
Может быть у вас все-таки другая цель? Не разделить, а найти - токены без сопутствующих знаков препинания.
Python
1
2
>>> re.findall(r'\w+',s)
['sdf', 'lkj', 'lkj', 'i', 'lkj', 'sdf', 'lkj']
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2019, 19:37
Помогаю со студенческими работами здесь

REGEX. Split
Всем привет! Не пойму почему такой сплит re.split(r'\W+', '100*b/y') возвращает, как и следовало ожидать, список без...

Split не помогает
Всем привет, есть такая вот задача, которая никак не поддаётся. Вам предоставляется файл с именем "books.txt" с названиями...

str.split
Как мне сделать чтобы str.split(',') работало только вне кавычек: >>>string = "abc, 'def, ghi', jkl" ...

split строки
text = """ Мужской род Именительный падеж двадцать один Родительный падеж двадцати одного Дательный падеж двадцати одному ...

Объяснить код со split
a=input() for i in a.split('\\'): print(i) Дан код,вот вы понимаете что он делает??Если да,то обьясните мне.Если я вам раскрою...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Настройка записи справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru