Python — поиск определенных символов во введенном тексте

#python #python-3.x

#python #python-3.x

Вопрос:

Задача состоит в том, чтобы создать программу, которая будет считать и печатать все коды в формате «AA000», который содержит буквы «AB» в начале и «00» в конце кода.

 def main():
    code = list(input ("Please enter all codes of your products in format 'AA000':").split())
    print("Your codes are:", code)

    char = -1
    for char_pos in range(len(code)):
        if code[char_pos] == "AB" or code[char_pos] == "00":
            char = char_pos
            print("ok")
    if char == -1:
        print("No!")


main()


==================================================================================================

    Please enter all codes of your products in format 'AA000':00
    Your codes are: ['00']
    ok

==================================================================================================

    Please enter all codes of your products in format 'AA000':AB400
    Your codes are: ['AB400']
    No!

  

Это работает не так, как планировалось, потому что программа не может найти эти символы, пока они вводятся вместе, но отдельно «AB» и «00» программа может найти… Как я могу решить эту проблему?

Комментарии:

1. Вам не нужно использовать циклы, просто проверьте, если len(code) == 5 and code.startswith('AB') and code.endswith('00') .

2. Использование регулярного выражения bool(re.match(r'ABd00')) будет более кратким, но приведенное выше условие делает свое дело.

Ответ №1:

Вы можете использовать нарезку, чтобы проверить, соответствует ли каждая часть кода фильтру:

 def main():
    code = input("Please enter all codes of your products in format 'AA000':")
    print("Your codes are:", code)
        
    if len(code) == 5 and code[:2] == 'AB' and code[-2:] == '00':
        print("ok")
    else:
        print("No!")


main()
  

Комментарии:

1. Спасибо, я протестировал его, и он работает! Но возникла другая проблема. Я должен присвоить переменной те коды, которые содержат «AB» и «00» в конце, для их подсчета и печати. Как я могу назначить его правильно?