Data engineer, пишу на python, люблю sqlalchemy... · 1 окт 2022
Интересный вопрос и мало вводных данных: например, что есть строка?
Python - это строка
Python - is the most popular language - и это строка
"""
Python
Java
JS
""" - и это тоже строка
Какую из них хочется разбить? Попробуем по порядку😎
Как отметил коллега ниже (первый случай), когда есть строка в виде слова или набора символов, то её легко разбить на символы при помощи нехитрых манипуляций:
Но такой код может вызвать приступ паники и непонимания, следуя PEP8 лучше писать более явно:
list("Python")
# ['P', 'y', 't', 'h', 'o', 'n']
Логика такая, Python разделяет строку по символьно - подход выше будет работать с любыми строками, примеры ниже:
Как быть когда хочется чего-то большего, например, разбить на слова или по какому-либо символу. Ответ есть - для разбиения строк по символу в Python используется метод split он доступен у каждой строки.
"Python".split()
# ['Python']
По-умолчанию, ничего не будет, тк символ для разбиения по-умолчанию пробел, вот так:
Ух, чего только не может Python. Для еще большей гибкости при разбиении строк используются регулярные выражения (модуль re docs или статья).
Вот как бы выглядели примеры выше при использовании регулярных выражений:
import re
# посимвольно
# ['', 'P', 'y', 't', 'h', 'o', 'n', '']
re.split(pattern=r'', string="Python")
# по пробелам (и любому их кол-ву)
# ['Python', '-', 'programing', 'language']
re.split(pattern=r'\s+', string="Python - programing language")
# по слову
# ['Python - ', ' language']
re.split(pattern=r'programing', string="Python - programing language")
# по нескольким словам
['Python - is the ', ' programing language for ', ' science and analyze']
re.split(pattern=r'best|data', string="Python - is the best programing language for data science and analyze")
Регулярные выражения чрезвычайно гибкие и позволяют не только разделять строки\тексты, но и производить замены\поиск, рекомендую обратить внимание на этот инструмент.