Использование регулярных выражений
Использование регулярных выражений для проверки данных пользователя показано в клиент-серверном приложении, клиентская часть которого реализована в виде примера №1, содержащего HTML-форму, которая имеет текстовое поле для ввода фамилии и инициалов пользователя ("user_name") и две кнопки: "Сброс" и "Передать данные":
Оглавление
Пример №1
<!DOCTYPE html>
<html>
<head>
<title>Передача данных серверу для проверки</title>
<link rel="stylesheet" href="file:///D:/!PYTHON/lab.css">
</head>
<body>
<h1>Передача данных серверу для проверки</h1>
<form method="get" action="http://zykov/PYTHON/get_data_form.py">
Введите фамилию и инициалы:
<input type="text" class="form" name="user_name"><br><br>
<input type="reset" value="Сброс" class="kn">
<input type="submit" value="Передать данные" class="kn">
</form>
</body>
</html>
После ввода пользователем своей фамилии и инициалов и нажатия кнопки "Передать данные" браузер отправляет введенные данные серверному приложению get_data_form.py:
#!c: . . . /Python35-32/python.exe
print ( "Content-Type: text/html\n" )
import cgi, cgitb, my_cgi, re
cgitb.enable()
user_name=cgi.parse()[ "user_name" ][0]
print (my_cgi.H, "Проверка данных пользоваетеля с помощью регулярных выражений" )
p=re.compile( r'^([А-Я][а-я]+)\s[А-Я]\.[А-Я]\.$' )
m=p.match(user_name)
if m:
print (my_cgi.H2, "Тов. " , m.group(1), "!" , sep= "" )
print (my_cgi.D, "Данные введены правильно." )
else : print (my_cgi.D, "Данные введены неправильно." ),
которое выполняет следующие действия:
|
|
· в первых строках указывает путь к интерпретатору языка Python 3.3 и формирует http-заголовок;
· подключает модули языка Python (cgi, cgitb и re), а также пользовательский модуль my_cgi, который содержит форматы для представления данных, отсылаемых клиенту;
· инициализирует обработчик ошибок модуля cgitb с заданием значений по умолчанию;
· с помощью метода cgi.parse() получает фамилию и инициалы пользователя (переменная user_name);
· сообщает пользователю о начале проверки его данных;
· создает шаблон соответствующего регулярного выражения и компилирует его с помощью функции compile(), получая экземпляр класса RegexpObject (переменная p);
· осуществляет сравнение с помощью метода match() введенных данных с объектом регулярного выражения, получая экземпляр класса MatchObject (переменная m);
· если значение m не равно None, то пользователю сообщается:
Тов. Петров!
Данные введены правильно.
В противном случае сообщается:
Данные введены неправильно.
Оглавление
Индивидуальные задания
Разработать приложение на базе технологии "клиент-сервер".
В задачи клиентской части входит: разработать HTML-документ, содержащий форму, обязательными элементами которой являются:
|
|
· три текстовых поля для ввода данных пользователя:
§ поле для ввода факультета и группы (name="data1");
§ поле для ввода имени студента (name="data2");
§ поле для ввода номера зачетной книжки (ЗК) и номера телефона (name="data3");
· текстовое поле для ввода литерала;
· кнопка для передачи данных на сервер.
В задачи серверной части входит:
· принять данные из формы;
· сформировать три шаблона регулярных выражений для проверки данных "data1" "data2" и "data3" согласно колонкам "Данные1"/"Шаблон", "Данные2"/"Шаблон" и "Данные3"/"Шаблон" табл. 1. Вводимые данные имеют постоянную и изменяемую части (последняя указана в фигурных скобках). Например, формат "Группа:{}" означает, что должно быть введено слово "Группа: ", а затем название группы (фигурные скобки не вводятся);
· сформировать шаблон РВ для проверки правильности задания литерала согласно колонке "Литерал":
§ 1 – литерала списка, содержащего следующие элементы:
1-й элемент – строка;
2-й элемент – число с плавающей точкой;
3-й элемент – логического типа;
§ 2 – литерала кортежа; содержащего следующие элементы:
1-й элемент – целое число;
2-й элемент – список из трех строк;
|
|
§ 3 – литерала диапазона;
§ 4 – литерала множества, содержащего следующие элементы:
1-й элемент – кортеж из четырех целых чисел;
2-й элемент – строка;
§ 5 – литерала словаря, содержащего два элемента:
ключ 1-го элемента – строка, значение – строка;
ключ 2-го элемента – целое число, значение – число с плавающей точкой;
· использовать для проверки данных функции или методы согласно "Данные1"/"Метод", "Данные2"/"Метод" и "Данные3"/"Метод" табл. 1 (для проверки колонки "Литерал" использовать метод, который не использовался при проверках данных "data1" "data2" и "data3"):
§ 1 – функцию match() модуля re;
§ 2 – функцию search() модуля re;
§ 3 – метод match() класса RegexpObject;
§ 4 – метод search() класса RegexpObject;
· по результатам всех проверок передать пользователю соответствующее сообщение.
Таблица 1 – Перечень заданий | |||||||
№ | Данные1 | Данные2 | Данные3 | Литерал | |||
Шаблон | Метод | Шаблон | Метод | Шаблон | Метод | ||
1 | Факультет {}, гр.: {} | 1 | Фамилия И. {} | 2 | ЗК:{} | 3 | 1 |
2 | Ф-т: {} Группа {} | 4 | Имя Фамилия {} | 1 | Номер ЗК{} | 2 | 2 |
3 | факультет - {} груп. {} | 3 | Фамилия И.О. {} | 4 | ЗК № {} | 1 | 3 |
4 | Группа {} ст. {} | 2 | И.О. Фамилия {} | 3 | Номер тел. {xxxxxx} | 4 | 4 |
5 | Гр. {} студент {} | 1 | И. Фамилия {} | 2 | Тел.:{xx-xx-xx} | 3 | 5 |
6 | груп. {} с_т {} | 4 | Фамилия И. О.{} | 1 | тел.: {xxxxxxx} | 2 | 1 |
7 | гр.: {} с-т {} | 3 | Имя_Фамилия {} | 4 | тел. № {xxx-xx-xx} | 1 | 2 |
8 | Студент {}, ф-т: {} | 2 | Фамилия И. {} | 3 | тел {xxxxxxxxxxx} | 4 | 3 |
9 | Ст. {} факультет {} | 1 | Имя Фамилия {} | 2 | ЗК:{} | 3 | 4 |
10 | Студ. {} ф_т {} | 4 | Фамилия И.О. {} | 1 | Номер ЗК{} | 2 | 5 |
11 | С-т {}, ф т: {} | 3 | И.О. Фамилия {} | 4 | ЗК № {} | 1 | 1 |
12 | Факультет {}, гр.: {} | 2 | И. Фамилия {} | 3 | Номер тел. {xxxxxx} | 4 | 2 |
13 | Ф-т: {} Группа {} | 1 | Фамилия И. О.{} | 2 | Тел.:{xx-xx-xx} | 3 | 3 |
14 | факультет - {} груп. {} | 4 | Имя_Фамилия {} | 1 | тел.: {xxxxxxx} | 2 | 4 |
15 | Группа {} ст. {} | 3 | Фамилия И. {} | 4 | тел. № {xxx-xx-xx} | 1 | 5 |
16 | Гр. {} студент {} | 2 | Имя Фамилия {} | 3 | тел {xxxxxxxxxxx} | 4 | 1 |
17 | груп. {} с_т {} | 1 | Фамилия И.О. {} | 2 | ЗК:{} | 3 | 2 |
18 | гр.: {} с-т {} | 4 | И.О. Фамилия {} | 1 | Номер ЗК{} | 2 | 3 |
19 | Студент {}, ф-т: {} | 3 | И. Фамилия {} | 4 | ЗК № {} | 1 | 4 |
20 | Ст. {} факультет {} | 2 | Фамилия И. О.{} | 3 | Номер тел. {xxxxxx} | 4 | 5 |
|
|
Дата добавления: 2021-11-30; просмотров: 15; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!