Как объединить строки в python
Перейти к содержимому

Как объединить строки в python

  • автор:

Объединить строки Python

Для того, чтобы объединить две и более строки можно применить оператор + . Смотрите пример:

txt1 = ‘ab’ txt2 = ‘cd’ res = txt1 + txt2 print(res)

Результат выполнения кода:

С помощью метода join

Объединить строки также возможно посредством метода join . При объединении двух строк методом join первая строка выступает разделителем для второй. Смотрите пример:

txt1 = ‘ab’ txt2 = ‘cd’ res = txt1.join(txt2) print(res)

Результат выполнения кода:

Смотрите также

  • метод join ,
    который возвращает строку из списка строк

Объединение и повторение строк в Python

Два или более строковых литерала, те, которые заключены в кавычки рядом друг с другом, автоматически объединяются.

>>> 'Py' 'thon' # 'Python' 

Эта функция особенно полезна, когда необходимо разделить длинные строки, что бы они помещались на экране в IDE:

>>> text = ('Поместите несколько строк в круглые скобки ' . 'чтобы они соединились вместе.') >>> text # 'Поместите несколько строк в круглые скобки, чтобы они были соединены вместе.' 

Такое поведение дает возможность так же делить форматированные строки (f-строки), например:

>>> a = 'например: 2' >>> b = 'вместе' >>> text = (f'Поместите несколько строк (a>) в круглые скобки ' . f'чтобы они соединились b>.') >>> text # 'Поместите несколько строк (например: 2) в круглые скобки чтобы они соединились вместе.' 

Такое деление строк работает только с литералами, но не с переменными или выражениями:

# не удастся объединить переменную и строковый литерал >>> prefix = 'Py' >>> prefix 'thon' # File "", line 1 # prefix 'thon' # ^ # SyntaxError: invalid syntax >>> ('un' * 3) 'ium' # File "", line 1 # ('un' * 3) 'ium' # ^ # SyntaxError: invalid syntax 

Если необходимо объединить переменные или переменную и литерал, используйте знак ‘+’ :

>>> prefix + 'thon' # 'Python' 

Лучший и наиболее быстрый (по времени выполнения), а так же менее ресурсозатратный (для ОС) способ объединить список строк — это конечно метод str.join() . Этот метод объединения строк рекомендуется компилятором PyPy (если вдруг захотите ускорить свой код).

# начальная строка >>> line = 'Состав корзины покупателя:' # список строк, которые нужно добавить >>> lst_line = ['- картошка', '- морковь', '- лук', '- чеснок', '- свекла'] # вставляем начальную строку по индексу 0 в список >>> lst_line.insert(0, line) # объединяем список строк по разделителю '\n' >>> rez = '\n'.join(lst_line) >>> print(rez) # Состав корзины покупателя: # - картошка # - морковь # - лук # - чеснок # - свекла 

Что бы повторить строку нужное количество раз, необходимо использовать символ умножения * :

>>> '#' * 45 # '#############################################' >>> '-!-' * 15 # '-!--!--!--!--!--!--!--!--!--!--!--!--!--!--!-' 

Такое поведение можно использовать, например для подчеркивания строк, выводимых в терминал или текстовый файл. Для этого вычислим длину слова, а затем символ ‘-‘ «умножим» на полученную длину строки:

>>> line = 'Привет мир!' >>> n = len(line) >>> print(f"line>\n'-'*n>") # Привет мир! # ----------- 
  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Преобразование строки в число
  • Строку в список, кортеж или множество символов
  • Одинарные, двойные и тройные кавычки в строке Python
  • Вывод специальных символов в строке Python «как есть»
  • Объединение и повторение строк
  • Индексирование строк
  • Использование срезов строк
  • Cрез строки Python от заданного символа/знака до конца строки
  • Создание макета для печати базовыми методами строк
  • Способы форматирования текстовых строк
  • Подсчет повторений слов в тексте, деление строки на список слов
  • Удаление слова из строки Python по фрагменту или шаблону
  • Удаление пунктуации из строки
  • Деление строки по заглавным буквам
  • Создание отчетов и писем по шаблонам

Как быстро конкатенировать строки в Python

Обложка поста Как быстро конкатенировать строки в Python

Как вы, наверное, знаете один из принципов в Python: “Должен быть один и только один способ сделать что-либо”. Можете убедиться в этом, выполнив в в интерпретаторе import this (вы увидите Дзен Python). Несмотря на это, иногда вам всё равно приходится выбирать между несколькими способами сделать что-то, и не всегда очевидно, какой способ лучше. Недавно один студент спросил меня, какой способ конкатенации строк в Python самый эффективный. Я решил поделиться результатом своего маленького исследования и с вами.

Для начала вспомним, какие способы объединения строк предоставляет нам Python. Во-первых, это оператор + :

>> 'abc' + 'def' 'abcdef' 

Также мы можем использовать оператор % , который, конечно, может использоваться не только для соединения строк, но и для этого тоже:

>>> "%s%s" % ('abc', 'def') 'abcdef' 

Есть и ещё более современная замена % — это str.format :

>>> ''.format('abc', 'def') 'abcdef' 

Так же, как и % , этот метод гораздо мощнее, чем обычный + , но тем не менее строки соединяют и с его помощью.

Как же мы будем замерять время? В Jupyter (так же известном, как IPython) мы можем использовать магическую команду timeit для запуска кода. Для запуска я подготовил четыре функции, каждая из которых складывает строки разным образом. Исходные строки хранятся в глобальных переменных ( x и y ), а локальная (для каждой функции) переменная z содержит результат сложения. Затем функция возвращает результат.

def concat1(): z = x + y return z def concat2(): z = "%s%s" % (x, y) return z def concat3(): z = "<><>".format(x, y) return z def concat4(): z = "".format(x, y) return z 

Конечно concat3() и concat4() фактически одинаковы, но я решил проверить и то, влияет указание порядка строк на скорость или нет. Затем я определил наши глобальные переменные:

x = 'abc' y = 'def' 

И запустил наши функции:

%timeit concat1() %timeit concat2() %timeit concat3() %timeit concat4() 

Результат оказался следующим:

  • concat1: 153 наносекунды;
  • concat2: 275 наносекунд;
  • concat3: 398 наносекунд;
  • concat4: 393 наносекунды.

Здесь мы можем видеть, что concat1() , который использует оператор + , выполняется гораздо быстрее остальных. Это немного расстроило меня, потому что мне очень нравится str.format , однако теперь в задачах, которые требуют огромного количества обработки строк, от него придётся отказаться.

Возможно, такие результаты могут быть связаны с тем, что короткие строки не создаются в Python каждый раз снова, а хранятся в специальной таблице? Давайте попробуем изменить наши глобальные переменные следующим образом:

x = 'abc' * 10000 y = 'def' * 10000 

Теперь мы получим следующие результаты:

  • concat1: 2.64 микросекунды;
  • concat2: 3.09 микросекунды;
  • concat3: 3.33 микросекунды;
  • concat4: 3.48 микросекунды;

Да, каждый из методов теперь работал гораздо дольше, однако общий результат не изменился — оператор + по прежнему лидирует. Заметим так же, что разница во времени между третьим и четвёртым методом, как и ожидалось, пренебрежимо мала.

После этого я попробовал не объявлять переменные глобальными, а задавать их в теле метода, но на результаты это всё равно не повлияло. Разумеется, можно проводить ещё много разных опытов (например, попробовать сложить больше, чем две строки), однако этого уже достаточно, чтобы иметь примерное представление о скоростях работы различных способов сложения строк в языке Python.

Как объединить две строки в Python

Строка Python – это набор символов Юникода. Python предоставляет множество встроенных функций для обработки строк. Объединение строк (конкатенация) – это процесс, когда одна строка соединяется с другой строкой. Это можно сделать следующими способами.

С помощью оператора +

Это простой способ объединить две строки в Python. Оператор + может складывать несколько строк вместе. Строкам должны быть присвоены различные переменные, потому что строки неизменяемы. Разберем это на следующем примере.

# Python program to show # string concatenation # Defining strings str1 = "Hello " str2 = "Devansh" # + Operator is used to strings concatenation str3 = str1 + str2 print(str3) # Printing the new combined string
Hello Devansh

В приведенном выше примере переменная str1 хранит строку «Hello», а переменная str2 хранит «Devansh». Мы использовали оператор +, чтобы объединить эти две строковые переменные и сохранить их в str3.

Использование метода join()

Метод join() используется для соединения строки, в которой разделитель str разъединил элементы последовательности.

# Python program to # string concatenation str1 = "Hello" str2 = "JavaTpoint" # join() method is used to combine the strings print("".join([str1, str2])) # join() method is used to combine # the string with a separator Space(" ") str3 = " ".join([str1, str2]) print(str3)
HelloJavaTpoint Hello JavaTpoint

В приведенном выше коде переменная str1 хранит строку «Hello», а переменная str2 хранит «JavaTpoint». Метод join() возвращает объединенную строку, которая хранится в str1 и str2. Метод join() принимает в качестве аргумента только список.

Применение оператора %

Оператор % используется для форматирования строки. Его также можно использовать для конкатенации строк.

# Python program to demonstrate # string concatenation str1 = "Hello" str2 = "JavaTpoint" # % Operator is used here to combine the string print("% s % s" % (str1, str2))
Hello JavaTpoint

В приведенном выше коде % s представляет строковый тип данных. Мы передали значение обеих переменных % s, который объединил строки и вернул «Hello JavaTpoint».

Использование функции format()

Python предоставляет функцию str.format(), которая позволяет использовать множественные подстановки и форматирование значений. Она принимает позиционные аргументы и объединяет строку посредством позиционного форматирования. Рассмотрим на примере.

# Python program to show # string concatenation str1 = "Hello" str2 = "JavaTpoint" # format function is used here to # concatenate the string print("<> <>".format(str1, str2)) # store the result in another variable str3 = "<> <>".format(str1, str2) print(str3)
Hello JavaTpoint Hello JavaTpoint

В приведенном выше коде функция format() объединяет обе строки и сохраняет в переменной str3. Фигурные скобки <> используются в качестве позиции строк.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *