Строковые методы

Слайд 1

🔠 Строковые методы split() и join()

Эти два метода работают в паре: split() разбивает строку на список, а join() — собирает строку из списка.

🔹 Метод split()

Метод split() разбивает строку на части (слова) и возвращает список. По умолчанию разделителем служит любой пробел или табуляция.

s = 'Python is the most powerful language'
words = s.split()
print(words)
# ['Python', 'is', 'the', 'most', 'powerful', 'language']
Пример использования при вводе данных:
numbers = input().split()
# Ввод: 1 2 3 4 5
print(numbers)
# ['1', '2', '3', '4', '5']

Обрати внимание: split() всегда возвращает список строк. Чтобы получить числа, нужно выполнить преобразование:

numbers = input().split()
for i in range(len(numbers)):
    numbers[i] = int(numbers[i])
print(numbers)
# [1, 2, 3, 4, 5]
Использование разделителя:
ip = '192.168.1.24'
numbers = ip.split('.')   # разделяем по точке
print(numbers)
# ['192', '168', '1', '24']
💡 Если не указать параметр — split() разделит строку по любому пробелу. Если указать явно, например split(' '), — каждый пробел будет учитываться отдельно.

🔹 Метод join()

Метод join() делает обратное — соединяет элементы списка в строку. Вызов производится на строке-разделителе.

words = ['Python', 'is', 'the', 'most', 'powerful', 'language']
s = ' '.join(words)
print(s)
# Python is the most powerful language

Разделителем здесь является один пробел ' '.

Примеры с другими разделителями:
words = ['Мы', 'учим', 'язык', 'Python']
print('*'.join(words))
print('-'.join(words))
print('*****'.join(words))
print('abc'.join(words))

Результат:

Мы*учим*язык*Python
Мы-учим-язык-Python
Мы*****учим*****язык*****Python
МыabcучимabcязыкabcPython
⚙️ Запомни: split() — превращает строку в список. join() — собирает строку из списка.

📘 Примечания

  • Разница между s.split() и s.split(' ') проявляется при нескольких пробелах подряд:
s = 'I love  Python'
words1 = s.split()
words2 = s.split(' ')
print(words1)
print(words2)

Результат:

['I', 'love', 'Python']
['I', 'love', '', 'Python']

При указании явного разделителя ' ' между двумя пробелами создаётся пустая строка.

  • Методы split() и join() — это строковые методы. Их нельзя вызвать у списков.
print([1, 2].split())
# AttributeError: 'list' object has no attribute 'split'
  • Метод join() работает только со строками. Если список содержит числа — будет ошибка:
numbers = [1, 2, 3, 4]
s = '*'.join(numbers)
# TypeError: sequence item 0: expected str instance, int found
  • Однако join() можно применять и к строкам:
s = '+'.join('pygen')
print(s)
# p+y+g+e+n