Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 18, 2015 17:05:08

Yana
От: Мурманск
Зарегистрирован: 2015-03-07
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярные выражения

Добрый день, уважаемые программисты.
Моя ситуация такова:

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])
(

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

Офлайн

#2 Июнь 18, 2015 17:28:07

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Регулярные выражения

Мадам, на предудущем допросе вы заявляли, что по питону вы прочитали больше книг, чем я вообще знаю.
Что, ни в одной из них вам не рассказали, как из одной последовательности получить другую? Ничего не говорили про map, списковые выражения?



Отредактировано FishHook (Июнь 18, 2015 17:43:35)

Офлайн

#3 Июнь 18, 2015 18:20:18

Yana
От: Мурманск
Зарегистрирован: 2015-03-07
Сообщения: 27
Репутация: +  0  -
Профиль   Отправить e-mail  

Регулярные выражения

Привет. Давно не виделись.
Я помню, что я говорила. И мне прям льстит ,что ваш мозг жадно запоминает все мои слова. Только утрировать вовсе не обязательно.

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

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

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

Пометка: использование регулярного выражения обязательно. такое требование.

Офлайн

#4 Июнь 18, 2015 18:37:26

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Регулярные выражения

Напиши функцию, которая на вход получает строку типа “8062866252” и возвращает правильную по ТЗ строку.



Офлайн

#5 Июнь 19, 2015 00:12:28

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Регулярные выражения

Yana
Вопрос: можно ли вообще использовать регулярные выражения со списками
Это возможно, но это плохая практика, так как впадаешь в зависимость от представления списка, которое не можешь контролировать.
Часто так делают (неграмотные) как хак, не понимая, что от хака до бага - один шаг.

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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version