Символьные строки
Операции со строками
Объединения (сцепления) строк
Оператор '+' . Эта операция иногда называется конкатенация. Например:
s1 = "Привет"
s2 = "Вася"
s = s1 + ", " + s2 + "!"
Выделение части строки (подстроки)
Применяется операция получения среза (англ. slicing), например s[3:8] означает символы строки s с 3-го по 7-й (то есть до 8-го, не включая его). Следующий фрагмент копирует в строку s1 символы строки s с 3-го по 7-й (всего 5 символов):
s = "0123456789"
s1 = s[3:8]
Удаление части строк
Для удаления части строки нужно составить новую строку, объединив части исходной строки до и после удаляемого участка: s = "0123456789" s1 = s[:3] + s[9:]
Срезы
С помощью срезов можно вставить новый фрагмент внутрь строки: s = "0123456789"
s1 = s[:3] + "ABC" + s[3:]
Реверс строки
Срезы позволяют выполнить реверс строки (развернуть её наоборот):
s1 = s[::-1]
Встроенные методы для работы с символьными строками.
Методы upper и lower позволяют перевести строку соответственно в верхний и нижний регистр: s = "aAbBcC"
s1 = s.upper() # "AABBCC" s2 = s.lower() # "aabbcc"
Метод isdigit проверяет, все ли символы строки – цифры, и возвращает логическое значение: s = "abc"
print ( s.isdigit() ) # False s1 = "123"
print ( s1.isdigit() ) # True
Пример обработки строк
Срезы и метод find
Метод split, который возвращает спи- сок слов, полученных при разбиении строки
Рекурсивный перебор
Это типичная задача на перебор вариантов, которую удобно свести к задаче меньшего размера. Процедура для перебора слов может быть записана так: def TumbaWords( A, w, L ): if len(w)==L:
print( w )
return
for c in A:
TumbaWords( A, w+c, L )
Сравнение и сортировка строк
Строки, как и числа, можно сравнивать. Для строк, состоящих из одних букв (русских или ла- тинских), результат сравнения очевиден: меньше будет та строка, которая идет раньше в алфавит- ном порядке.
С другими символами (цифрами, латинскими буквами)?
Цифры стоят в кодовой
таблице по порядку, причём раньше, чем латинские буквы; латинские буквы – раньше, чем русские; заглавные буквы (русские и латинские) – раньше, чем соответствующие строчные. Поэтому
«5STEAM» < «STEAM» < «Steam» < «steam» < «ПАР» < «Пар» < «пар».
С помощью языка Python удобно записать строки в массив (список) и затем отсортировать с помощью метода sort: aS=[]
print ( "Введите строки для сортировки:" ) while True:
s1 = input()
if s1=="": break aS.append( s1 )
aS.sort(). print( aS )
Преобразования число<->строка
int – переводит строку в целое число
Пример преобразования строк в числовые значения: s = "123"
N=int( s ) # N = 123
float – переводит строку в вещественное число
Пример преобразования строк в числовые значения: s = "123.456"
X=float( s ) # X = 123.456
str – переводит целое или вещественное число в строку
Примеры обратного преобразования: N=123
s=str( N ) # s = "123"
X = 123.456
s=str( X ) # s = "123.456"
Функция str использует правила форматирования, установленные по умолчанию. При необходимости можно использовать собственное форматирование. Например, в строке:
s = "{:5d}".format(N)
Для вещественных чисел можно использовать форматы f (с фиксированной точкой) и e (экспоненциальный формат, с плавающей точкой): X = 123.456
s="{:7.2f}".format(X) # s ="◦123.46"
s = "{:10.2e}".format(X) # s= "◦◦ 1.23e+02"
Поиск в строках
Метод find
Функция find, она определена для символьных строк и вызывается как метод, с помощью точечной записи. В скобках нужно указать образец для поиска: s="Здесь был Вася."
n=s.find( "с" ) # n = 3 if n>=0:
print( "Номер символа", n ) else:
print( "Символ не найден." )
Метод rfind
Для той же строки s, что и в предыдущем примере, метод rfind вернёт 12 (индекс последней буквы «с»): s="Здесь был Вася."
n=s.rfind( "с" ) # n = 12
Строки в процедурах и функциях
Алгоритм выполнения, чтобы избежать проблем: 1) записываем результат в другой символьной строке res, удаляя из строки s уже обработанную часть. Предположим, что на некотором ша- ге в оставшейся части строки s обнаружено слово wOld. Для этого нужно выполнить следующие действия: 1) ту часть строки s, которая стоит слева от образца, «прицепить» в конец строки res;
2) «прицепить» в конец строки res слово-замену wNew;
3) удалить из строки s начальную часть, включая найденное слово-образец.
Функция на языке Python. Её параметры – это исходная строка s, строка-образец wOld и строка-замена wNew:
def replaceAll( s, wOld, wNew ): lenOld = len(wOld)
res=""
while len(s) > 0:
p=s.find( wOld ) if p<0:
return res + s if p>0:
res = res + s[:p] res=res+wNew
if p+lenOld>=len(s):
s="" else:
s = s[p+lenOld:] return res