Как я могу проверить количество раз, когда символ появляется во входной строке? - PullRequest
0 голосов
/ 05 декабря 2018

Например: я хочу, чтобы мои пользователи вводили 5 цифр, разделенных запятыми ...

Если я хочу убедиться, что запятая (,) появляется только 4 раза, иначе им придется повторновведите их строку еще раз, как мне проверить это?

пример вопроса: "Пожалуйста, введите 5 цифр, разделенных запятыми -"

плохой ответ: 2,3 или 4,5, 6,7,8,9

хороший ответ: 2,3,4,5,6 (4 запятые, 5 цифр)

я думаю, что я должен использовать регулярное выражение.Если у кого-то есть другие идеи, пожалуйста, поделитесь.Спасибо!

Ответы [ 3 ]

0 голосов
/ 05 декабря 2018

Очень питоническим способом было бы:

sample = "1,3,23,12,"
if(len(sample.split(","))<sample.count(",")) and sample.count(",") ==4:
    return True
else:
    return False

Приведенный выше метод противодействует ошибке, если после разделителя отсутствует символ.

0 голосов
/ 05 декабря 2018

Вам не нужно регулярное выражение, это можно сделать с помощью основных функций Python:

answer = '2,3,4,5,6'

split_answer = answer.split(',')
if len(split_answer) == 5 and all(number.strip().isdigit() for number in split_answer):
    print ('good answer')
else:
    print ('bad answer')

С помощью строки answer.split(',') вы проверяете количество элементов, оставшихся после разбиения наодиночная запятая;с all(..) вы проверяете каждый из этих элементов на наличие только цифр.strip внутри него, чтобы убедиться, что окружающие пробелы удаляются первыми.

0 голосов
/ 05 декабря 2018

Вы можете использовать это регулярное выражение для точного совпадения с 5 числами, разделенными запятыми,

^\d+(?:,\d+){4}$

Здесь,

  • ^ -> Начало ввода
  • \d+ -> Соответствует одной или нескольким цифрам
  • (?:,\d+){4} -> Соответствует запятой, за которой следуют одна или несколько цифр и этот шаблон ровно 4 раза.
  • $ --> Конец ввода

Демонстрация

Если в вашем входе могут быть дополнительные пробелы, вы можете использовать следующее регулярное выражение.

^\s*\d+\s*(?:,\s*\d+\s*){4}$

Вот пример кода Python,

import re
arr = ['2,3','4,5,6,7,8,9','2,3,4,5,6']
for s in arr:
 if re.match(r'^\d+(?:,\d+){4}$', s): 
  print(s + ' --> Match')
 else: 
  print(s + ' --> Do not Match')

Что печатает,

2,3 --> Do not Match
4,5,6,7,8,9 --> Do not Match
2,3,4,5,6 --> Match
...