5. Форматирование
Форматирование в питоне – мощный инструмент управления строками. Есть несколько подходов – стандартный и с использованием шаблонов. Для форматирования в питоновских строках используется стандартный оператор – символ %. Слева от процента указываем строку, справа – значение или список значений:
>>> s = 'Hello %s' % 'word'
>>> s
'Hello word'
>>> s = 'one %s %s' % ('two','three')
>>> s
'one two three'
Если нужно преобразование числа в строку, используется числовой спецификатор – %d или %f:
>>> s = 'one %d %f' % (2 , 3.5)
>>> s
'one 2 3.500000'
При форматировании можно указать общую ширину строки и точность для чисел, при этом число будет дополнено незначащими нулями. В следующем примере результирующая строка будет иметь длину 10 символов, на дробную часть будет отведено 5 символов:
>>> x = 4/3
>>> '%10.5f' % x
' 1.00000'
Пробелы слева можно отформатировать нулями:
>>> from math import pi
>>> '%015.10f' % pi
'0003.1415926536'
Для форматирования можно использовать другой подход – шаблоны строк, Template. В следующем примере для форматирования уже можно использовать словарь:
>>> from string import Template
>>> s = Template('1 $two 3 4 $five')
>>> d={}
>>> d['two']=2
>>> d['five']=5
>>> s.substitute(d)
'1 2 3 4 5'
Таблица типов форматирования для строк
Код |
Значение |
s |
Строковый |
r |
Строковый, но с использованием repr, а не str |
c |
Посимвольный |
d |
Десятичный |
i |
Целый |
u |
То же, что и d (no longer unsigned) |
o |
Восьмеричный |
x |
Шестнадцатеричный |
X |
Шестнадцатеричный в верхнем регистре |
e |
Floating-point exponent, нижний регистр |
E |
То же, что и e, но в верхнем регистре |
f |
Floating-point decimal |
F |
Floating-point decimal |
g |
Floating-point e или f |
C |
Floating-point E или F |
% |
Символьный % |
6. Методы
Строки обладают большим набором разнообразных методов. Наиболее популярные из них:
find – находит подстроку в строке – возвращает позицию вхождения строки, либо -1:
>>> s = 'The find method finds a substring'
>>> s.find('find')
4
>>> s.find('finds')
16
>>> s.find('findsa')
-1
join – объединяет через разделитель набор строк:
>>> seq = ['one','two','three']
>>> sep = ','
>>> sep.join(seq)
'one,two,three'
split – это обратная функция для join, разбивает строку на последовательность:
>>> s = '/usr/local/bin'
>>> s.split('/')
['', 'usr', 'local', 'bin']
replace – заменяет в строке одну подстроку на другую:
>>> s = 'replace method returns a string'
>>> s.replace('returns','return')
'replace method return a string'
strip – удаляет пробелы слева и справа:
>>> ' this is whitespace string '.strip()
'this is whitespace string'
translate – в отличие от replace, может делать множественную замену. В следующем примере каждый символ '1' в исходной строке будет заменен на символ '3', а символ '2' – на символ '4' соответственно:
>>> from string import maketrans
>>> table = maketrans('12', '34')
>>> '1212 5656'.translate(table)
'3434 5656'
Для конверсии различных типов в строковый используются функции str, int, ord, chr:
str – конвертирует число в строку;
int – конвертирует строку в число;
ord – возвращает значение байта;
chr – конвертирует число в символ.
Таблица методов, доступных в Python 3.0
S.capitalize() S.ljust(width [, fill]) |
S.center(width [, fill]) S.lower() |
S.count(sub [, start [, end]]) S.lstrip([chars]) |
S.encode([encoding [,errors]]) S.maketrans(x[, y[, z]]) |
S.endswith(suffix [, start [, end]]) S.partition(sep) |
S.expandtabs([tabsize]) S.replace(old, new [, count]) |
S.find(sub [, start [, end]]) S.rfind(sub [,start [,end]]) |
S.format(fmtstr, *args, **kwargs) S.rindex(sub [, start [, end]]) |
S.index(sub [, start [, end]]) S.rjust(width [, fill]) |
S.isalnum() S.rpartition(sep) |
S.isalpha() S.rsplit([sep[, maxsplit]]) |
S.isdecimal() S.rstrip([chars]) |
S.isdigit() S.split([sep [,maxsplit]]) |
S.isidentifier() S.splitlines([keepends]) |
S.islower() S.startswith(prefix [, start [, end]]) |
S.isnumeric() S.strip([chars]) |
S.isprintable() S.swapcase() |
S.isspace() S.title() |
S.istitle() S.translate(map) |
S.isupper() S.upper() |
S.join(iterable) S.zfill(width) |
