decoder = re.compile(r'^([-+]?)0*(\d*)((?:\.\d*)?)((?:[eE][-+]?\d+)?)$') 


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



ЗНАЕТЕ ЛИ ВЫ?

decoder = re.compile(r'^([-+]?)0*(\d*)((?:\.\d*)?)((?:[eE][-+]?\d+)?)$')

Поиск

import re

 

decoder = re.compile(r'^([-+]?)0*(\d*)((?:\.\d*)?)((?:[eE][-+]?\d+)?)$')

 

print decoder.match("12.234").groups() print decoder.match("-0.23e-7").groups() print decoder.match("1e10").groups()

 

Получим

 

('', '12', '.234', '') ('-', '', '.23', 'e-7') ('', '1', '', 'e10')

 

Множественная замена

 

В некоторых приложениях требуется производить в тексте сразу несколько замен.Для решения этой задачи можно использовать метод sub() вместе со специальной функцией,которая и будет управлять заменами:

 

import re

 

def multisub(subs_dict, text): def _multisub(match_obj):

 

return str(subs_dict[match_obj.group()])

 

multisub_re = re.compile("|".join(subs_dict.keys())) return multisub_re.sub(_multisub, text)

 

repl_dict = {'one': 1, 'two': 2, 'three': 3}

 

print multisub(repl_dict, "One, two, three")

 

Будет выведено

 

One, 2, 3

 

В качестве упражнения предлагается сделать версию,которая бы не учитывала регистр букв.

В приведенной программе вспомогательная функция _multisub() по полученному объекту с результатом сравнения возвращает значение из словаря с описаниями замен subs_dict.

 

Работа с несколькими файлами

 

Для упрощения работы с несколькими файлами можно использовать модуль fileinput.Он позволяет обработать в одном цикле строки всех указанных в командной строке файлов:

 

import fileinput

 

for line in fileinput.input(): process(line)

 

В случае,когда файлов не задано,обрабатывается стандартный ввод.

 

Работа с Unicode

 

До появленияUnicodeсимволы в компьютере кодировались одним байтом(а то и только семью битами).Один байт охватывает диапазон кодов от0до255включительно,а это


 


значит,что больше двух алфавитов,цифр,знаков пунктуации и некоторого набора специальных символов в одном байте не помещается.Каждый производитель использовал свою кодировку для одного и того же алфавита.Например,до настоящего времени дожили целых пять кодировок букв кириллицы,и каждый пользователь не раз видел в своем браузере или электронном письме пример несоответствия кодировок.

 

СтандартUnicode -единая кодировка для символов всех языков мира.Это большое облегчение и некоторое неудобство одновременно.Плюс состоит в том,что в однойUnicode-строке помещаются символы совершенно различных языков. Минус же в том, что пользователи привыкли применять однобайтовые кодировки,большинство приложений ориентировано на них,во многих системах поддержкаUnicodeосуществляется лишь частично,так как требует огромной работы по разработке шрифтов.Правда,символы одной кодировки можно перевести вUnicodeи обратно.

 

Здесь же следует заметить,что файлы по-прежнему принято считать последовательностью байтов,поэтому для хранения текста в файле вUnicodeтребуется использовать одну из транспортных кодировокUnicode (utf-7, utf-8, utf-16,...).В некоторых их этих кодировок имеет значение принятый на данной платформе порядок байтов(big-endian,старшие разряды в конце илиlittle-endian,младшие в конце).Узнать порядок байтов можно,прочитав атрибут из модуля sys.На платформеIntelэто выглядит так:

 

>>> sys.byteorder 'little'

 



Поделиться:


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

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