Проверка типа содержимого строки 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Проверка типа содержимого строки



>>> "0123".isalnum(), "123abc".isalnum(), "abc123".isalnum()

(True, True, True)

>>> "строка".isalnum()

True

>>> "".isalnum(), "123 abc".isalnum(), "abc, 123.".isalnum()

(False, False, False)

 

 

>>> "string".isalpha(), "строка".isalpha(), "".isalpha()

(True, True, False)

>>> "123abc".isalpha(), "str str".isalpha(), "st,st".isalpha()

(False, False, False)

 

 

>>> "0123".isdigit(), "123abc".isdigit(), "abc123".isdigit()

(True, False, False)

 

 

>>> "123".isdecimal(), "123стр".isdecimal()

(True, False)

 

 

>>> "\u2155".isnumeric(), "\u2155".isdigit()

(True, False)

>>> print("\u2155") # Выведет символ "1/5"

 

 

>>> "STRING".isupper(), "СТРОКА".isupper(), "".isupper()

(True, True, False)

>>> "STRING1".isupper(), "СТРОКА, 123".isupper(), "123".isupper()

(True, True, False)

>>> "string".isupper(), "STRing".isupper()

(False, False)

 

 

>>> "srting".islower(), "строка".islower(), "".islower()

(True, True, False)

>>> "string1".islower(), "str, 123".islower(), "123".islower()

(True, True, False)

>>> "STRING".islower(), "Строка".islower()

(False, False)

 

 

>>> "Str Str".istitle(), "Стр Стр".istitle()

(True, True)

>>> "Str Str 123".istitle(), "Стр Стр 123".istitle()

(True, True)

>>> "Str str".istitle(), "Стр стр".istitle()

(False, False)

>>> "".istitle(), "123".istitle()

(False, False)

 

 

>>> "123".isprintable()

True

>>> "PHP Python".isprintable()

True

>>> "\n".isprintable()

False

 

 

>>> "".isspace(), " \n\r\t".isspace(), "str str".isspace()

(False, True, False)

 

 

>>> "s".isidentifier()

True

>>> "func".isidentifier()

True

>>> "123func".isidentifier()

False

 

 

>>> keyword.iskeyword("else")

True

>>> keyword.iskeyword("elsewhere")

False

 

Листинг 6.4. Суммирование неопределенного количества чисел

# -*- coding: utf-8 -*-

print("Введите слово 'stop' для получения результата")

summa = 0

while True:

x = input("Введите число: ")

if x == "stop":

break # Выход из цикла

if x == "":

print("Вы не ввели значение!")

continue

if x[0] == "-": # Если первым символом является минус

if not x[1:].isdigit(): # Если фрагмент не состоит из цифр

print("Необходимо ввести число, а не строку!")

continue

else: # Если минуса нет, то проверяем всю строку

if not x.isdigit(): # Если строка не состоит из цифр

print("Необходимо ввести число, а не строку!")

continue

x = int(x) # Преобразуем строку в число

summa += x

print("Сумма чисел равна:", summa)

input()

6.12. Тип данных bytes

>>> bytes()

b''

>>> bytes("строка", "cp1251")

b'\xf1\xf2\xf0\xee\xea\xe0'

>>> bytes("строка")

Traceback (most recent call last):

File "<pyshell#33>", line 1, in <module>

bytes("строка")

TypeError: string argument without an encoding

 

 

>>> bytes("string\uFFFD", "cp1251", "strict")

Traceback (most recent call last):

File "<pyshell#35>", line 1, in <module>

bytes("string\uFFFD", "cp1251", "strict")

File "C:\Python34\lib\encodings\cp1251.py", line 12, in encode

return codecs.charmap_encode(input,errors,encoding_table)

UnicodeEncodeError: 'charmap' codec can't encode character

'\ufffd' in position 6: character maps to <undefined>

>>> bytes("string\uFFFD", "cp1251", "replace")

b'string?'

>>> bytes("string\uFFFD", "cp1251", "ignore")

b'string'

 

 

>>> "строка".encode()

b'\xd1\x81\xd1\x82\xd1\x80\xd0\xbe\xd0\xba\xd0\xb0'

>>> "строка".encode(encoding="cp1251")

b'\xf1\xf2\xf0\xee\xea\xe0'

>>> "строка\uFFFD".encode(encoding="cp1251",

errors="xmlcharrefreplace")

b'\xf1\xf2\xf0\xee\xea\xe0&#65533;'

>>> "строка\uFFFD".encode(encoding="cp1251",

errors="backslashreplace")

b'\xf1\xf2\xf0\xee\xea\xe0\\ufffd'

 

 

>>> b"string", b'string', b"""string""", b'''string'''

(b'string', b'string', b'string', b'string')

>>> b"строка"

SyntaxError: bytes can only contain ASCII literal characters.

>>> b"\xf1\xf2\xf0\xee\xea\xe0"

b'\xf1\xf2\xf0\xee\xea\xe0'

 

 

>>> b = bytes([225, 226, 224, 174, 170, 160])

>>> b

b'\xe1\xe2\xe0\xae\xaa\xa0'

>>> str(b, "cp866")

'строка'

 

 

>>> bytes(10)

b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'

 

 

>>> b = bytes.fromhex(" e1 e2e0ae aaa0 ")

>>> b

b'\xe1\xe2\xe0\xae\xaa\xa0'

>>> str(b, "cp866")

'строка'

 

 

>>> b = bytes("string", "cp1251")

>>> b

b'string'

>>> b[0] # Обращение по индексу

>>> b[1:3] # Получение среза

b'tr'

>>> b + b"123" # Конкатенация

b'string123'

>>> b * 3 # Повторение

b'stringstringstring'

>>> 115 in b, b"tr" in b, b"as" in b

(True, True, False)

 

 

>>> list(bytes("string", "cp1251"))

[115, 116, 114, 105, 110, 103]

 

 

>>> b = bytes("string", "cp1251")

>>> b[0] = 168

Traceback (most recent call last):

File "<pyshell#76>", line 1, in <module>

b[0] = 168

TypeError: 'bytes' object does not support item assignment

 

 

>>> b = bytes("string", "cp1251")

>>> b.replace(b"s", b"S")

b'String'

 

 

>>> b"string" + "string"

Traceback (most recent call last):

File "<pyshell#79>", line 1, in <module>

b"string" + "string"

TypeError: can't concat bytes to str

>>> b"string" + "string".encode("ascii")

b'stringstring'

 

 

>>> len("строка")

>>> len(bytes("строка", "cp1251"))

>>> len(bytes("строка", "utf-8"))

 

 

>>> b = bytes("строка", "cp1251")

>>> b.decode(encoding="cp1251"), b.decode("cp1251")

('строка', 'строка')

 

 

>>> b = bytes("строка", "cp1251")

>>> str(b, "cp1251")

'строка'

 

Листинг 6.5. Преобразование кодировок

>>> w = bytes("Строка", "cp1251") # Данные в кодировке windows-1251

>>> k = w.decode("cp1251").encode("koi8-r")

>>> k, str(k, "koi8-r") # Данные в кодировке KOI8-R

(b'\xf3\xd4\xd2\xcf\xcb\xc1', 'Строка')

>>> w = k.decode("koi8-r").encode("cp1251")

>>> w, str(w, "cp1251") # Данные в кодировке windows-1251

(b'\xd1\xf2\xf0\xee\xea\xe0', 'Строка')

6.13. Тип данных bytearray

>>> bytearray()

bytearray(b'')

>>> bytearray("строка", "cp1251")

bytearray(b'\xf1\xf2\xf0\xee\xea\xe0')

>>> bytearray("строка")

Traceback (most recent call last):

File "<pyshell#2>", line 1, in <module>

bytearray("строка")

TypeError: string argument without an encoding

 

 

>>> bytearray("string\uFFFD", "cp1251", "strict")

Traceback (most recent call last):

File "<pyshell#5>", line 1, in <module>

bytearray("string\uFFFD", "cp1251", "strict")

File "C:\Python34\lib\encodings\cp1251.py", line 12, in encode

return codecs.charmap_encode(input,errors,encoding_table)

UnicodeEncodeError: 'charmap' codec can't encode character

'\ufffd' in position 6: character maps to <undefined>

>>> bytearray("string\uFFFD", "cp1251", "replace")

bytearray(b'string?')

>>> bytearray("string\uFFFD", "cp1251", "ignore")

bytearray(b'string')

 

 

>>> b = bytearray([225, 226, 224, 174, 170, 160])

>>> b

bytearray(b'\xe1\xe2\xe0\xae\xaa\xa0')

>>> bytearray(b'\xe1\xe2\xe0\xae\xaa\xa0')

bytearray(b'\xe1\xe2\xe0\xae\xaa\xa0')

>>> str(b, "cp866")

'строка'

 

 

>>> bytearray(5)

bytearray(b'\x00\x00\x00\x00\x00')

 

 

>>> b = bytearray.fromhex(" e1 e2e0ae aaa0 ")

>>> b

bytearray(b'\xe1\xe2\xe0\xae\xaa\xa0')

>>> str(b, "cp866")

'строка'

 

 

>>> b = bytearray("Python", "ascii")

>>> b[0] # Можем получить значение

>>> b[0] = b"J"[0] # Можем изменить значение

>>> b

bytearray(b'Jython')

 

 

>>> b = bytearray("string", "ascii")

>>> b.append(b"1"[0]); b

bytearray(b'string1')

 

 

>>> b = bytearray("string", "ascii")

>>> b.extend(b"123"); b

bytearray(b'string123')

 

 

>>> b = bytearray("string", "ascii")

>>> b + b"123" # Возвращает новый объект

bytearray(b'string123')

>>> b += b"456"; b # Изменяет текущий объект

bytearray(b'string456')

 

 

>>> b = bytearray("string", "ascii")

>>> b[len(b):] = b"123" # Добавляем элементы в последовательность

>>> b

bytearray(b'string123')

 

 

>>> b = bytearray("string", "ascii")

>>> b.insert(0, b"1"[0]); b

bytearray(b'1string')

 

 

>>> b = bytearray("string", "ascii")

>>> b[:0] = b"123"; b

bytearray(b'123string')

 

 

>>> b = bytearray("string", "ascii")

>>> b.pop() # Удаляем последний элемент

>>> b

bytearray(b'strin')

>>> b.pop(0) # Удаляем первый элемент

>>> b

bytearray(b'trin')

 

 

>>> b = bytearray("string", "ascii")

>>> del b[5] # Удаляем последний элемент

>>> b

bytearray(b'strin')

>>> del b[:2] # Удаляем первый и второй элементы

>>> b

bytearray(b'rin')

 

 

>>> b = bytearray("strstr", "ascii")

>>> b.remove(b"s"[0]) # Удаляет только первый элемент

>>> b

bytearray(b'trstr')

 

 

>>> b = bytearray("string", "ascii")

>>> b.reverse(); b

bytearray(b'gnirts')

 

 

>>> b = bytearray("строка", "cp1251")

>>> b.decode(encoding="cp1251"), b.decode("cp1251")

('строка', 'строка')

 

 

>>> b = bytearray("строка", "cp1251")

>>> str(b, "cp1251")

'строка'

6.14. Преобразование объекта в последовательность байтов

import pickle

 

 

>>> import pickle

>>> obj1 = [1, 2, 3, 4, 5] # Список

>>> obj2 = (6, 7, 8, 9, 10) # Кортеж

>>> pickle.dumps(obj1)

b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04K\x05e.'

>>> pickle.dumps(obj2)

b'\x80\x03(K\x06K\x07K\x08K\tK\ntq\x00.'

 

 

>>> pickle.loads(b'\x80\x03]q\x00(K\x01K\x02K\x03K\x04K\x05e.')

[1, 2, 3, 4, 5]

>>> pickle.loads(b'\x80\x03(K\x06K\x07K\x08K\tK\ntq\x00.')

(6, 7, 8, 9, 10)

Шифрование строк

import hashlib

 

 

>>> import hashlib

>>> h = hashlib.sha1(b"password")

 

 

>>> h = hashlib.sha1()

>>> h.update(b"password")

 

 

>>> h = hashlib.sha1(b"password")

>>> h.digest()

b'[\xaaa\xe4\xc9\xb9??\x06\x82%\x0bl\xf83\x1b~\xe6\x8f\xd8'

>>> h.hexdigest()

'5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8'

 

Листинг 6.6. Проверка правильности ввода пароля

>>> import hashlib

>>> h = hashlib.md5(b"password")

>>> p = h.hexdigest()

>>> p # Пароль, сохраненный в базе

'5f4dcc3b5aa765d61d8327deb882cf99'

>>> h2 = hashlib.md5(b"password") # Пароль, введенный пользователем

>>> if p == h2.hexdigest(): print("Пароль правильный")

 

 

>>> h = hashlib.sha512(b"password")

>>> h.digest_size

 

 

>>> import hashlib

>>> dk = hashlib.pbkdf2_hmac('sha512', b'1234567', b'saltsaltsaltsalt', 100000)

>>> dk

b"Sb\x85tc-\xcb@\xc5\x97\x19\x90\x94@\x9f\xde\x07\xa4p-\x83\x94\xf4\x94\x99\x07\xec\xfa\xf3\xcd\xc3\x88jv\xd1\xe5\x9a\x119\x15/\xa4\xc2\xd3N\xaba\x02\xc0s\xc1\xd1\x0b\x86xj(\x8c>Mr'@\xbb"

Регулярные выражения

import re



Поделиться:


Последнее изменение этой страницы: 2016-06-23; просмотров: 303; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.234.62 (0.071 с.)