Кириллица в регулярных выражениях Python

Дата публикации:30 апреля 2013 г. 18:13:51

Здравствуйте! Как известно, в Python версии < 3.0 существуют обычные строки и строки юникода. Отсюда много проблем, особенно среди новичков. То ошибка, то неправильная работа программы. Особенно часто бывает не ясно, почему не работают регулярные выражения на поиск и замену русских символов. Вроде бы, регулярка правильная, однако, программа не работает. Будем разбираться.

 

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

-*- coding: utf-8 -*-

Так вы укажите интерпретатору в какой кодировке ему работать. В данном случае это UTF-8. Теперь поговорим про регулярные выражения. Им тоже указать, что вы работаете со строками юникода. Итак, создадим новый файл и напишем в него:

#! /usr/bin/python
# -*- coding: utf-8 -*-

import re

text = u'Привет, мир!'

regexp = re.sub(ur'^Привет, ', '', text)
print regexp

Если вы запустите данный файл, то должны увидеть в интерпретаторе следующее:

>> мир!

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

Пожалуй, это все. Спасибо за внимание!

Метки:python, regexp, регулярные выражения, туториал, урок