@puffffik
Молодой человек

Как проверить строку на наличие любых символов кроме чисел?

Надо проверить строку на наличие букв, спец символов, а также чтоб в начале и конце не было знаков +-*/, т к модуль sympify выдает ошибку и крашит прогу. Я накидал уже вариант, мб у кого есть идеи сделать проще?
from sympy import sympify
a = input("ввод: ")
c ='+ - * ** /'
b = 'q w e r t y u i o p a s d f g h j k l z x c v b n m Q W E R T Y U I O P A S D F G H J K L Z X C V B N M й ц у к е н г ш щ з х ф ы в а п р о л д ж э я ч с м и т ь б ю % \ | = [ ] < > { } ° ~ ) ( + - & _ ₽ # @ " \' : ; ! ? \ % ™ ® % © ^ ¢ $ € £ ∆ ¶ × ÷ π √ •'
if not any(x in a for x in b)  and not any(x in a[0] for x in c) and not any(x in a[-1] for x in c):
    
    
    print(sympify(a))
else:
    print('ошибка')
  • Вопрос задан
  • 664 просмотра
Решения вопроса 1
seven5674
@seven5674
Старый я уже что бы что-то в себе менять
я так понимаю что в конце надо получить что-то вроде
"23432+22342+564"
на регулярке
^(\d+[+-]?)+[^+-]$
\d+ - только числа 1 или более
[+-]? - символ + или - 0 или 1 раз
(\d+[+-]?)+ повторить это все 1 или более раз
[^+-]$ - без символов +,- в конце строки

итого
import re

while True:
    s = input("str = ").replace(' ','')
    if re.match(r'^(\d+[+-]?)+[^+-]$', s):
        print("OK {}".format(s))
        break
    else:
        print("Err {}".format(s))
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
AgentSmith
@AgentSmith
Это мой правильный ответ на твой вопрос
import re
testString = "dfdhgf456464"
#testString = "dfdfghdfhdf ghfgn ghnv "
m = re.findall("\d+", testString)
if (m):
    print("has numbers " + str(m))
Ответ написан
Комментировать
HemulGM
@HemulGM Куратор тега Python
Delphi Developer, сис. админ
А str.isdigit() не подойдёт, или я не понял задачу?
Ответ написан
Комментировать
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
from sympy import sympify, SympifyError


def show_error(error=None):
    if error is not None:
        print(f'ошибка {error}')
    else:
        print(f'ошибка')


def calculate():
    try:
        print(f'result: {sympify(input("ввод: "))}')
    except SympifyError:
        show_error()
    except NameError:
        show_error()
    except TypeError:
        show_error()
    except Exception as e:
        show_error(e)


while True:
    calculate()

надо внимательно посмотреть и потестировать, у sympi могут быть ещё крайние случаи.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы