Основные строковые операции


Строки - это фрагменты текста. Их можно определить как что угодно, заключенное в кавычки:

astring = "Hello world!" astring2 = 'Hello world!'
1
2
astring = "Привет, мир!"
astring2 = 'Привет, мир!'
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В 1]:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Как видите, первое, что вы узнали, - это напечатать простое предложение. Это предложение было сохранено Python в виде строки. Однако вместо того, чтобы сразу выводить строки, мы рассмотрим различные вещи, которые вы можете с ними делать. Вы также можете использовать одинарные кавычки для присвоения строки. Однако вы столкнетесь с проблемами, если само присваиваемое значение будет содержать одинарные кавычки. Например, чтобы назначить строку в этих скобках (одинарные кавычки - это ''), вам нужно использовать двойные кавычки только как это

astring = "Hello world!" print("single quotes are ' '") print(len(astring))
1
2
3
4
astring = "Привет, мир!"
print ( "одинарные кавычки - это" "" )
печать ( len ( строка ))
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В 1]:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Это напечатает 12, потому что "Hello world!" состоит из 12 символов, включая знаки препинания и пробелы.

astring = "Hello world!" print(astring.index("o"))
1
2
astring = "Привет, мир!"
печать ( строчка . индекс ( "о" ))
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В 1]:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Это выводит на печать 4, потому что первое вхождение буквы «o» находится на расстоянии 4 символов от первого символа. Обратите внимание, что на самом деле во фразе есть два «о» - этот метод распознает только первое.

Но почему не распечатал 5? Разве «о» не пятый символ в строке? Чтобы упростить задачу, Python (и большинство других языков программирования) начинают с 0 вместо 1. Таким образом, индекс «o» равен 4.

astring = "Hello world!" print(astring.count("l"))
1
2
astring = "Привет, мир!"
печать ( вяжущее . количество ( "л" ))
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В 1]:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Для тех из вас, кто использует глупые шрифты, это буква L в нижнем регистре, а не цифра один. Это подсчитывает количество l в строке. Следовательно, он должен напечатать 3.

astring = "Hello world!" print(astring[3:7])
1
2
astring = "Привет, мир!"
печать ( строчка [ 3 : 7 ])
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В 1]:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Это напечатает фрагмент строки, начиная с индекса 3 и заканчивая индексом 6. Но почему 6, а не 7? Опять же, большинство языков программирования делают это - это упрощает математические вычисления в скобках.

Если у вас есть только одно число в скобках, это даст вам единственный символ в этом индексе. Если вы опустите первое число, но оставите двоеточие, это даст вам отрезок от начала до числа, которое вы оставили. Если вы пропустите второе число, оно даст вам отрезок от первого числа до конца.

Вы даже можете заключить в скобки отрицательные числа. Это простой способ начать с конца строки, а не с начала. Таким образом, -3 означает «3-й знак с конца».

astring = "Hello world!" print(astring[3:7:2])
1
2
astring = "Привет, мир!"
печать ( строчка [ 3 : 7 : 2 ])
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В 1]:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Это печатает символы строки от 3 до 7, пропуская один символ. Это расширенный синтаксис среза. Общая форма - [старт: стоп: шаг].

astring = "Hello world!" print(astring[3:7]) print(astring[3:7:1])
1
2
3
astring = "Привет, мир!"
печать ( строчка [ 3 : 7 ])
печать ( строчка [ 3 : 7 : 1 ])
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В 1]:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Обратите внимание, что оба они производят одинаковый результат

В C нет такой функции, как strrev, для переворота строки. Но с вышеупомянутым типом синтаксиса среза вы можете легко перевернуть строку, подобную этой

astring = "Hello world!" print(astring[::-1])
1
2
astring = "Привет, мир!"
печать ( строка [ :: - 1 ])
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В 1]:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Этот

astring = "Hello world!" print(astring.upper()) print(astring.lower())
1
2
3
astring = "Привет, мир!"
печать ( строчка . верхний ( ))
печать ( строчка . нижний ( ))
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В 1]:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Они создают новую строку, в которой все буквы преобразованы в прописные и строчные соответственно.

astring = "Hello world!" print(astring.startswith("Hello")) print(astring.endswith("asdfasdfasdf"))
1
2
3
astring = "Привет, мир!"
печать ( строка . начинается с ( "Привет" ))
печать ( строка . заканчивается с ( "asdfasdfasdf" ))
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В 1]:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Это используется, чтобы определить, начинается ли строка с чего-либо или чем-то заканчивается, соответственно. Первый напечатает True, так как строка начинается с «Hello». Второй напечатает False, так как строка определенно не заканчивается на «asdfasdfasdf».

astring = "Hello world!" afewwords = astring.split(" ")
1
2
astring = "Привет, мир!"
afewwords = вяжущий . сплит ( "" )
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
В 1]:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
1/0 0/0

Это разбивает строку на группу строк, сгруппированных вместе в список. Поскольку этот пример разбивается на пробел, первым элементом в списке будет «Hello», а вторым - «world!».

Упражнение

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