Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 16, 2014 19:48:49

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

вырезать из строки цифровые символы

есть
такие строки

a = "-1"
b = "2d"
c = "-3sf"
d = "4"
как написать функцию в которую можно передать любую из этих строк а она вернёт
только цифровой символ со знаком

Офлайн

#2 Янв. 16, 2014 19:54:30

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

вырезать из строки цифровые символы

Вы с регулярными выражениями (модуль re) знакомы? Если нет- почитайте. За час сами ответ на свой вопрос сможете дать. Эх.

Офлайн

#3 Янв. 16, 2014 20:04:22

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

вырезать из строки цифровые символы

dimy44
Вы с регулярными выражениями (модуль re) знакомы? Если нет- почитайте. За час сами ответ на свой вопрос сможете дать. Эх.
пока не знаком но это повод
а пока так решил:
def f2(mystr):
return "".join([s for s in mystr if s.isdigit() or s == "-"])
сегодня нет этого часа

Офлайн

#4 Янв. 16, 2014 20:12:09

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

вырезать из строки цифровые символы

Ознакомьтесь. Ваше решение уг.

Офлайн

#5 Янв. 16, 2014 21:51:23

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

вырезать из строки цифровые символы

dimy44
Ознакомьтесь. Ваше решение уг.
переписал на так:
def mycut(s):
    pattern = '\-?\d*'
    return re.findall(pattern, s)[0]

Отредактировано vrabey (Янв. 16, 2014 21:55:11)

Офлайн

#6 Янв. 17, 2014 01:36:28

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

вырезать из строки цифровые символы

vrabey
в зависимости от того какие там у вас строки (например может ли быть ‘q-15’ и тп) возможно лучше заменить шаблон на ‘\-?\d+’, ведь вы же числа ищете



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Янв. 17, 2014 02:23:56

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

вырезать из строки цифровые символы

JOHN_16
лучше заменить шаблон на ‘\-?\d+’
этот шаблон точнее только как он работает я не понимаю, а хотелось бы

Офлайн

#8 Янв. 17, 2014 13:12:09

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

вырезать из строки цифровые символы

Ну у вас после метасимвола d идет *, что означает 0 и более. Т.е. цифры может и не быть, и, скажем, в строке вида “rt-g” выведет просто “-”.

Офлайн

#9 Янв. 17, 2014 15:42:40

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

вырезать из строки цифровые символы

dimy44
Ну у вас после метасимвола d идет *, что означает 0 и более. Т.е. цифры может и не быть, и, скажем, в строке вида “rt-g” выведет просто “-”.
не могу понять почему на строку “q-15” шаблон ‘\-?\d*’ ничего не выводит, а ‘\-?\d+’ работает?
в моём случае ‘*’ - 0 и больше, а ‘+’ - 1 и болше. в моём понимании оба шаблона для строки “q-15” должны работать, но мой не работает

Офлайн

#10 Янв. 17, 2014 17:53:02

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

вырезать из строки цифровые символы

Я тоже озадачен, честно говоря. Пустую строку возвращает. Подождём ответ знатоков.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version