Форум сайта python.su
есть
такие строки
a = "-1" b = "2d" c = "-3sf" d = "4"
Офлайн
Вы с регулярными выражениями (модуль re) знакомы? Если нет- почитайте. За час сами ответ на свой вопрос сможете дать. Эх.
Офлайн
dimy44пока не знаком но это повод
Вы с регулярными выражениями (модуль re) знакомы? Если нет- почитайте. За час сами ответ на свой вопрос сможете дать. Эх.
def f2(mystr):
return "".join([s for s in mystr if s.isdigit() or s == "-"])
Офлайн
dimy44переписал на так:
Ознакомьтесь. Ваше решение уг.
def mycut(s): pattern = '\-?\d*' return re.findall(pattern, s)[0]
Отредактировано vrabey (Янв. 16, 2014 21:55:11)
Офлайн
vrabey
в зависимости от того какие там у вас строки (например может ли быть ‘q-15’ и тп) возможно лучше заменить шаблон на ‘\-?\d+’, ведь вы же числа ищете
Офлайн
JOHN_16этот шаблон точнее только как он работает я не понимаю, а хотелось бы
лучше заменить шаблон на ‘\-?\d+’
Офлайн
Ну у вас после метасимвола d идет *, что означает 0 и более. Т.е. цифры может и не быть, и, скажем, в строке вида “rt-g” выведет просто “-”.
Офлайн
dimy44не могу понять почему на строку “q-15” шаблон ‘\-?\d*’ ничего не выводит, а ‘\-?\d+’ работает?
Ну у вас после метасимвола d идет *, что означает 0 и более. Т.е. цифры может и не быть, и, скажем, в строке вида “rt-g” выведет просто “-”.
Офлайн
Я тоже озадачен, честно говоря. Пустую строку возвращает. Подождём ответ знатоков.
Офлайн