Get started learning Python with DataCamp's free Intro to Python tutorial. Learn Data Science by completing interactive coding challenges and watching videos by expert instructors. Start Now!

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join 11 million other learners and get started learning Python for data science today!

Good news! You can save 25% off your Datacamp annual subscription with the code LEARNPYTHON23ALE25 - Click here to redeem your discount

Базовые операции со строками


Строки — это фрагменты текста. Они могут быть определены как что угодно между кавычками:

astring = "Hello world!"
astring2 = 'Hello world!'

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

astring = "Hello world!"
print("single quotes are ' '")

print(len(astring))

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

astring = "Hello world!"
print(astring.index("o"))

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

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

astring = "Hello world!"
print(astring.count("l"))

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

astring = "Hello world!"
print(astring[3:7])

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

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

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

astring = "Hello world!"
print(astring[3:7:2])

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

astring = "Hello world!"
print(astring[3:7])
print(astring[3:7:1])

Обратите внимание, что оба элемента выдают один и тот же результат.

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

astring = "Hello world!"
print(astring[::-1])

Это

astring = "Hello world!"
print(astring.upper())
print(astring.lower())

Эти методы создают новую строку с всеми буквами, преобразованными в верхний и нижний регистр соответственно.

astring = "Hello world!"
print(astring.startswith("Hello"))
print(astring.endswith("asdfasdfasdf"))

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

astring = "Hello world!"
afewwords = astring.split(" ")

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

Упражнение

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

s = "Hey there! what should this string be?" # Length should be 20 print("Length of s = %d" % len(s)) # First occurrence of "a" should be at index 8 print("The first occurrence of the letter a = %d" % s.index("a")) # Number of a's should be 2 print("a occurs %d times" % s.count("a")) # Slicing the string into bits print("The first five characters are '%s'" % s[:5]) # Start to 5 print("The next five characters are '%s'" % s[5:10]) # 5 to 10 print("The thirteenth character is '%s'" % s[12]) # Just number 12 print("The characters with odd index are '%s'" %s[1::2]) #(0-based indexing) print("The last five characters are '%s'" % s[-5:]) # 5th-from-last to end # Convert everything to uppercase print("String in uppercase: %s" % s.upper()) # Convert everything to lowercase print("String in lowercase: %s" % s.lower()) # Check how a string starts if s.startswith("Str"): print("String starts with 'Str'. Good!") # Check how a string ends if s.endswith("ome!"): print("String ends with 'ome!'. Good!") # Split the string into three separate strings, # each containing only a word print("Split the words of the string: %s" % s.split(" ")) s = "Strings are awesome!" # Length should be 20 print("Length of s = %d" % len(s)) # First occurrence of "a" should be at index 8 print("The first occurrence of the letter a = %d" % s.index("a")) # Number of a's should be 2 print("a occurs %d times" % s.count("a")) # Slicing the string into bits print("The first five characters are '%s'" % s[:5]) # Start to 5 print("The next five characters are '%s'" % s[5:10]) # 5 to 10 print("The thirteenth character is '%s'" % s[12]) # Just number 12 print("The characters with odd index are '%s'" %s[1::2]) #(0-based indexing) print("The last five characters are '%s'" % s[-5:]) # 5th-from-last to end # Convert everything to uppercase print("String in uppercase: %s" % s.upper()) # Convert everything to lowercase print("String in lowercase: %s" % s.lower()) # Check how a string starts if s.startswith("Str"): print("String starts with 'Str'. Good!") # Check how a string ends if s.endswith("ome!"): print("String ends with 'ome!'. Good!") # Split the string into three separate strings, # each containing only a word print("Split the words of the string: %s" % s.split(" ")) test_object("s", incorrect_msg="Make sure you change the string assigned to `s` to match the exercise instructions.") success_msg("Great work!")

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join over a million other learners and get started learning Python for data science today!

Previous Tutorial Next Tutorial Take the Test
Copyright © learnpython.org. Read our Terms of Use and Privacy Policy