alnum Возвращает True, если строка содержит только буквы и цифры и имеет ненулевую длину. Иначе — False
isalpha Возвращает True, если строка содержит только буквы и длина ненулевая
isdecimal Возвращает True, если строка содержит только десятичные знаки (только для строк Unicode) и длина ненулевая
isdigit Возвращает True, если содержит только цифры и длина ненулевая
islower Возвращает True, если все буквы строчные (и их более одной), иначе — False
isnumeric Возвращает True, если в строке только числовые знаки (только для Unicode)
isspace Возвращает True, если строка состоит только из пробельных символов. Внимание! Для пустой строки возвращается False
join(seq) Соединение строк из последовательности seq через разделитель, заданный строкой
lower Приводит строку к нижнему регистру букв
lstrip Удаляет пробельные символы слева
replace(old, new[, n]) Возвращает копию строки, в которой подстроки old заменены new. Если задан параметр n, то заменяются только первые n вхождений
rstrip Удаляет пробельные символы справа
split([sep[, n]]) Возвращает список подстрок, получающихся разбиением строки a разделителем sep. Параметр n определяет максимальное количество разбиений (слева)
startswith(prefix) Начинается ли строка с подстроки prefix
strip Удаляет пробельные символы в начале и в конце строки
translate(table) Производит преобразование с помощью таблицы перекодировки table, содержащей словарь для перевода кодов в коды (или в None, чтобы удалить символ). Для Unicode–строк
translate(table[, dc]) То же, но для обычных строк. Вместо словаря — строка перекодировки на 256 символов, которую можно сформировать с помощью функции string.maketrans. Необязательный параметр dc задает строку с символами, которые необходимо удалить
upper Переводит буквы строки в верхний регистр
В следующем примере применяются методы 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
Это текст, в котором встречаются запятые, поставленные не так.
Рекомендации по эффективности
При работе с очень длинными строками или большим количеством строк, применяемые операции могут по–разному влиять на быстродействие программы.
Например, не рекомендуется многократно использовать операцию конкатенации для склеивания большого количества строк в одну. Лучше накапливать строки в списке, а затем с помощью join собирать в одну строку:
Листинг
>>> a = ""
>>> for i in xrange(1000):
… a += str(i) # неэффективно!
…
>>> a = "".join([str(i) for i in xrange(1000)]) # более эффективно
Конечно, если строка затем обрабатывается, можно применять итераторы, которые позволят свести использование памяти к минимуму.
Модуль StringIO
В некоторых случаях желательно работать со строкой как с файлом. Модуль StringIO как раз дает такую возможность.
Открытие «файла» производится вызовом StringIO. При вызове без аргумента — создается новый «файл», при задании строки в качестве аргумента — «файл» открывается для чтения:
Листинг
import StringIO
my_string = «1234567890»
f1 = StringIO.StringIO
f2 = StringIO.StringIO(my_string)
Далее с файлами f1 и f2 можно работать как с обычными файловыми объектами.
Для получения содержимого такого файла в виде строки применяется метод getvalue:
Листинг
f1.getvalue
Противоположный вариант (представление файла на диске в виде строки) можно реализовать на платформах Unix и Windows с использованием модуля mmap. Здесь этот модуль рассматриваться не будет.
Модуль difflib
Для приблизительного сравнения двух строк в стандартной библиотеке предусмотрен модуль 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