Найти - Пользователи
Полная версия: Регулярные выражения
Начало » Python для новичков » Регулярные выражения
1
Yana
Добрый день, уважаемые программисты.
Моя ситуация такова:

1) Я получаю через MySQLdb кортеж с номерами телефонов. При этом каждый номер тоже является кортежем.

Пример вывода:
(('78062431252',),('89210653110',),('79110334310',))

2) Мне нужно отобрать те номера, которые начинаются на 7 и заменить её за 8.

По сути это можно сделать перебором элементов и при помощи регулярных выражений.
НО кортеж же последовательность неизменяемая.
Значит такой вариант не катит.

Но кортеж же можно переделать в строку или список.
Со списком получается удобнее, потому что каждый номер будет отдельно рассматриваемым элементом.

Поэкспериментировала в Django shell:

>>> t = (('8062866252',),('99210335510',))
>>> l = list(t)
>>> print(l)
[('8062866252',), ('99210335510',)]
>>> print(l[1])
('99210335510',)
>>> t = (('8062866252',),('99210335510',))
>>> s = str(t)
>>> print(s)
(('8062866252',), ('99210335510',))
>>> print(s[1])
(

Но при этом всё равно из-за первоначального формата остаются скобочки эти дурацкие и запятые.
Вопрос: можно ли вообще использовать регулярные выражения со списками и можно ли избавиться через регулярные выражения от назойливых скобочек и запятых?
FishHook
Мадам, на предудущем допросе вы заявляли, что по питону вы прочитали больше книг, чем я вообще знаю.
Что, ни в одной из них вам не рассказали, как из одной последовательности получить другую? Ничего не говорили про map, списковые выражения?
Yana
Привет. Давно не виделись.
Я помню, что я говорила. И мне прям льстит ,что ваш мозг жадно запоминает все мои слова. Только утрировать вовсе не обязательно.

Спасибо, что напомнили про map.
Работала с ним совсем чуть-чуть.
Получается примерно вот такой синтаксис?

Есть список result с номерами, и как я выше продемонстрировала, в каждом номере ещё хранятся скобки и запятые.
('89——– ,')

при помощи list(map(lambda x: <регулярное выражение с заменой 7 на 8 и удалением ненужных скобок и запятых> , <результат> )) можно всё осуществить?

Пометка: использование регулярного выражения обязательно. такое требование.
FishHook
Напиши функцию, которая на вход получает строку типа “8062866252” и возвращает правильную по ТЗ строку.
py.user.next
Yana
Вопрос: можно ли вообще использовать регулярные выражения со списками
Это возможно, но это плохая практика, так как впадаешь в зависимость от представления списка, которое не можешь контролировать.
Часто так делают (неграмотные) как хак, не понимая, что от хака до бага - один шаг.

Надо вытаскивать каждый номер, потом транслировать его, а потом обратно упаковывать.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB