В следующем примере применяются методы 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
>>> 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
Регулярные выражения