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

Вывести определенные символы через модуль re

02.08.2017, 20:14. Показов 2247. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дарова. Нужна помощь - как можно вывести символы, которые окружают 1 или более символа в верхнем регистре? Ну допустим - "xZy" - отсюда надо вывести x и y, т.к. они находятся с двух сторон для символа в верхнем регистре. Конечно же с использованием import re, но если кто-то еще скажет как можно сделать без него, как альтернатива, буду сильно благодарен. Ну и вот сама строка:
Python
1
line = lrnZsklPOQVdkQfrnrlzMgPWULlkyfscaNtQChbRUvmAftzeKPqtIlxPwckixFVHxEEnfJWYIFtxTnTrKUhvLWxmTZkLjwwDlBy
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.08.2017, 20:14
Ответы с готовыми решениями:

Вывести список таблиц (начинающихся на определенные символы)
Здравствуйте! В базе данных есть таблицы допустим: a_1_2222 a_1_23323 a_1_334 a_2_2323...

Вывести все слова из текста, которые содержат определенные символы
дана строка заделённая вывести слова из текста которые содержат символ из множества Добавлено...

Вывести все слова из текста, которые оканчиваются на определенные символы (найти ошибку)
var s:string;p:char;mn1,mn2:set of char;i,n,v:integer; begin cls; mn1:=; mn2:=;...

Дана символьная строка. Заменить символы ! через один на символы '-', вывести полученную строку
Пользователь вводит определенный текст, допустим: Привет! Как дела! Что делаешь! а должно...

Как вывести в Laravel через route определённые ссылки
опрос, как вывести в Laravel через route ссылки, в которых имеются значения допустим naprimer?...

4
Эксперт по компьютерным сетям
5898 / 3355 / 1035
Регистрация: 03.11.2009
Сообщений: 10,003
02.08.2017, 21:37 2
Python
1
2
3
4
5
line = "lrnZsklPOQVdkQfrnrlzMgPWULlkyfscaNtQChbRUvmAftzeKPqtIlxPwckixFVHxEEnfJWYIFtxTnTrKUhvLWxmTZkLjwwDlBy"
for x in range(len(line) - 2):
    trio = line[x:x+3]
    if trio[1].isupper() and trio[::2].islower():
        print(trio, "-->", trio[::2])
Добавлено через 8 минут
Python
1
2
3
4
5
6
import re
 
line = "lrnZsklPOQVdkQfrnrlzMgPWULlkyfscaNtQChbRUvmAftzeKPqtIlxPwckixFVHxEEnfJWYIFtxTnTrKUhvLWxmTZkLjwwDlBy"
 
for m in re.findall(r'([a-z])(?=[A-Z](?=([a-z])))', line):
    print(m)
1
Эксперт Python
295 / 108 / 57
Регистрация: 07.12.2016
Сообщений: 209
02.08.2017, 22:02 3
Лучший ответ Сообщение было отмечено chelovekfromhel как решение

Решение

Если несколько заглавных(правда тогда дублироваться будут строчные - zMgPWULlky):
Python
1
2
3
4
5
6
7
8
9
import re
 
line = 'lrnZsklPOQVdkQfrnrlzMgPWULlkyfscaNtQChbRUvmAftzeKPqtIlxPwckixFVHxEEnfJWYIFtxTnTrKUhvLWxmTZkLjwwDlBy'
check = re.compile(r"[A-Z]+")
value = ''
for x in check.finditer(line):
    value+=line[x.span()[0]-1]+line[x.span()[1]]
    print('{}<--{}-->{}'.format(line[x.span()[0]-1],line[x.span()[0]:x.span()[1]],line[x.span()[1]]))
print(value)
Добавлено через 20 минут
Вот так вроде без повторов:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import re
line = 'lrnZsklPOQVdkQfrnrlzMgPWULlkyfscaNtQChbRUvmAftzeKPqtIlxPwckixFVHxEEnfJWYIFtxTnTrKUhvLWxmTZkLjwwDlBy'
value = ''
check = []
for x in re.finditer(r"[A-Z]+",line):
    if (x.span()[0]-1 not in check):
        check.append(x.span()[1])
        value+=line[x.span()[0]-1]+line[x.span()[1]]
        print('{}<--{}-->{}'.format(line[x.span()[0]-1],line[x.span()[0]:x.span()[1]],line[x.span()[1]]))
    else:
        check.append(x.span()[1])
        value += line[x.span()[1]]
        print('{}<--{}-->{}'.format('#', line[x.span()[0]:x.span()[1]], line[x.span()[1]]))
print(value)
1
Эксперт по компьютерным сетям
5898 / 3355 / 1035
Регистрация: 03.11.2009
Сообщений: 10,003
03.08.2017, 00:22 4
Python
1
2
3
4
5
6
import re
 
line = "lrnZsklPOQVdkQfrnrlzMgPWULlkyfscaNtQChbRUvmAftzeKPqtIlxPwckixFVHxEEnfJWYIFtxTnTrKUhvLWxmTZkLjwwDlBy"
 
for m in re.findall(r'([a-z])(?=([A-Z]+)(?=([a-z])))', line):
    print(m)
0
Просто Лис
Эксперт Python
5726 / 3525 / 1055
Регистрация: 17.05.2012
Сообщений: 10,346
Записей в блоге: 9
04.08.2017, 14:57 5
Хм, у меня так заработало:
Python
1
re.findall(r'([a-z])[A-Z]+([a-z])', line)
0
04.08.2017, 14:57
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.08.2017, 14:57
Помогаю со студенческими работами здесь

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

Вводить определенные символы
Дан TextBox в него можно вводить только цифры и запятые или точки причем 2 раз нельзя вводит...

Удалить определенные символы
Здравствуйте, форумчане! Вы не раз выручали меня, может и на этот раз не обойдете вниманием....

Игнорировать определенные символы
Здравствуйте, никак не могу понять, как написать следующее регулярное выражение: Есть...

Удалить определённые символы
Вам дана строка S, состоящая только из пробелов и строчных латинских букв. Строка представляет из...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru