Читаем Язык программирования Python полностью

В следующем примере применяются методы split() и join() для разбиения строки в список (по разделителям) и обратное объединение списка строк в строку

>>> s = "This is an example."

>>> lst = s.split(" ")

>>> print lst

['This', 'is', 'an', 'example.']

>>> s2 = "\n".join(lst)

>>> print s2

This

is

an

example.

Для проверки того, оканчивается ли строка на определенное сочетание букв, можно применить метод endswith():

>>> filenames = ["file.txt", "image.jpg", "str.txt"

>>> for fn in filenames:

...  if fn.lower().endswith(".txt"):

...   print fn

...

file.txt

str.txt

Поиск в строке можно осуществить с помощью метода find(). Следующая программа выводит все функции, определенные в модуле оператором def:

import string

text = open(string.__file__[:-1]).read()

start = 0

while 1:

 found = text.find("def ", start)

if found == -1:

 break

print text[found:found + 60].split("(")[0]

start = found + 1

Важным для преобразования текстовой информации является метод replace(), который рассматривается ниже:

>>> a = "Это текст , в котором встречаются запятые , поставленные не так."

>>> b = a.replace(" ,", ",")

>>> print b

Это текст, в котором встречаются запятые, поставленные не так.

<p>Рекомендации по эффективности</p>

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

Например, не рекомендуется многократно использовать операцию конкатенации для склеивания большого количества строк в одну. Лучше накапливать строки в списке, а затем с помощью join() собирать в одну строку:

>>> a = ""

>>> for i in xrange(1000):

...  a += str(i) # неэффективно!

...

>>> a = "".join([str(i) for i in xrange(1000)]) # более эффективно

Конечно, если строка затем обрабатывается, можно применять итераторы, которые позволят свести использование памяти к минимуму.

<p>Модуль StringIO</p>

В некоторых случаях желательно работать со строкой как с файлом. Модуль StringIO как раз дает такую возможность.

Открытие «файла» производится вызовом StringIO(). При вызове без аргумента — создается новый «файл», при задании строки в качестве аргумента — «файл» открывается для чтения:

import StringIO

my_string = «1234567890»

f1 = StringIO.StringIO()

f2 = StringIO.StringIO(my_string)

Далее с файлами f1 и f2 можно работать как с обычными файловыми объектами.

Для получения содержимого такого файла в виде строки применяется метод getvalue():

f1.getvalue()

Противоположный вариант (представление файла на диске в виде строки) можно реализовать на платформах Unix и Windows с использованием модуля mmap. Здесь этот модуль рассматриваться не будет.

<p>Модуль difflib</p>

Для приблизительного сравнения двух строк в стандартной библиотеке предусмотрен модуль difflib.

Функция difflib.get_close_matches() позволяет выделить n близких строк к заданной строке:

get_close_matches(word, possibilities, n=3, cutoff=0.6)

где

word

Строка, к которой ищутся близкие строки.

possibilities

Список возможных вариантов.

n

Требуемое количество ближайших строк.

cutoff

Коэффициент (из диапазона [0, 1]) необходимого уровня совпадения строк. Строки, которые при сравнении с word дают меньшее значение, игнорируются.

Следующий пример показывает функцию difflib.get_close_matches() в действии:

>>> import unicodedata

>>> names = [unicodedata.name(unicode(chr(i))) for i in range(40, 127)]

>>> print difflib.get_close_matches("LEFT BRACKET", names)

['LEFT CURLY BRACKET', 'LEFT SQUARE BRACKET']

В списке names — названия Unicode–символов с ASCII–кодами от 40 до 127.

<p>Регулярные выражения</p>
Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных