Как сделать несколько строк в питоне

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Строки (string) один из наиболее часто используемых типов данных в Python.

Создать строку можно просто заключив символы в кавычки, при этом для Python одинарные кавычки ( ' ' ) имеют такое же значение, как и двойные ( " " ).

Создаётся строка простым присваивание значения переменной. Например:

Получение значений из строк

Для доступа к отдельным символам в строке используются квадратные скобки с указанием индекса символа, допустимо выполнение “среза” (slicing), с указанием начального и конечного индекса.

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

Обновление данных в строках

Вы можете обновлять информацию в строке, переназначая данные переменной:

Примечание: вообще, строки в Python являются неизменяемыми (immutable) объектами, и прямое присваивание нового значения элементу списка вызовет ошибку:

Но можно воспользоваться операцией конкатенации (см. ниже) для этого. При этом – сам объект в памяти остаётся прежним:

Escape-последовательности

В таблице ниже приводится список символов, которые не отображаются на экране при обработке.

Они обрабатываются как в одинарных, так и в двойных кавычках.

Backslash
notation
Hexadecimal
character
Description
a 0x07 звуковой сигнал или предупреждение
b 0x08 возврат на одну позицию
cx control-x
C-x control-x
e 0x1b escape
f 0x0c команда принтера
M-C-x meta-Control-x
n 0x0a новая строка
nnn восьмеричное значение
r 0x0d возврат каретки
s 0x20 пробел
t 0x09 табуляция
v 0x0b вертикальная табуляция
x символ x
xnn шестнадцатеричное значение

Специальные строковые операторы

Предположим, переменная строки a содержит ‘Hello‘, а переменная b – ‘Python‘:

Operator Description Example
+ конкатенация – добавление значений с обеих сторон от оператора a + b вернёт HelloPython
* повторение – создаёт новую строку, в которой объединены копии той же строки a*2 вернёт HelloHello
[] срез (slice) – возвращает символ с указанным индексом a[1] вернёт e
[ : ] срез диапазона – возвращает символы с заданном диапазоне индексов a[1:4] вернёт ell
in членство (membership) – возвращает истину (true, 1) если заданный символ присутствует в строке H in a вернёт 1
not in членство (membership) – возвращает истину (true, 1) если заданный символ не присутствует в строке M not in a вернёт 1
r/R обычная строка (raw string) – подавляет значение escape-последовательностей; синтаксис таких строк такой же, как и у обычных строк, за исключением оператора r или R, который добавляется непосредтсвенно перед открывающей кавычкой print r’n’ вернёт n и print R’n’ вернёт n
% format – выполнение форматирования строки см. далее

Оператор форматирования строк

Одна из наиболее приятных возможностей в Python – оператор % . Этот оператор уникален для строковых типов данных и подобен функции printf() из языка С:

Другой, более наглядный и простой пример:

В таблице представлен полный список символов, которые могут быть использованы с оператором % :

Format Symbol Conversion
%c один символ
%s преобразование строки данными другого str()-объекта
%i алиас %d
%d целое десятичное число
%u то же, что и %d (устарев?)
%o восьмеричное целое
%x шестнадцатеричное целое (строчные буквы)
%X шестнадцатеричное целое (ПРОПИСНЫЕ буквы)
%e экспоненциальное представление (строчная ‘e’)
%E экспоненциальное представление (прописная ‘e’)
%f вещественное число в десятичном виде
%g краткая версия для %f и %e
%G краткая версия для %f и %E

Кроме этого, есть дополнительные возможности:

Тройные кавычки

Тройные кавычки в Python позволяют располагать текст в несколько строк и использовать в нём специальные символы, такие как табуляция ( t ), новая строка ( n ) и другие.

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

Синтаксис тройных кавычек представляет собой набор из трёх открывающих последовательных одинарных или двойных кавычек – и трёх закрывающих.

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

Обратите внимание, что каждый специальный символ был превращен в его “печатную форму”, а новые строки отображаются либо прямым переводом строки в тексте, либо escape-последовательностью ( n ).

“Сырые строки” (raw strings) не обрабатывают символ обратно слеша как специальный символ. Каждый символ, который указан в такой строке будет отображён “как есть”:

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

Теперь – давайте сделаем “необработанную строку” с помощью символа r перед открывающей кавычкой:

Строки с unicode

Мы ограничимся такой Unicode-строкой:

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

Как видно, Unicode-строки используют объявление с помощью символа u , так же как raw-строки используют объявление с помощью префикса r .

Встроенные строковые методы (или методы строк)

UPD: смотрите более полное описание строковых методов тут>>>.

В Python имеются такие встроенные методы для управление строками:

SN Methods with Description
1 capitalize()
делает первую букву Заглавной;
2 center(width, fillchar)
возвращает новую строку, смещенную к центру на указанное количество символов;
3 count(str, beg= 0,end=len(string))
подсчитывает количество вхождений заданных символов в переданной строке;
4 decode(encoding=’UTF-8′,errors=’strict’)
декодирует строку, используя заданный метод кодировки;
5 encode(encoding=’UTF-8′,errors=’strict’)
кодирует строку, используя заданный метод кодировки;
6 endswith(suffix, beg=0, end=len(string))
определяет, заканчивается ли строка заданным суффиксом; возвращает истину (true) если да, и ложь (false) в противном случае;
7 expandtabs(tabsize=8)
увеличивает количество пробелов для табуляции, по-умолчанию – 8;
8 find(str, beg=0 end=len(string))
Определяет, содержатся ли заданные символы в в строке, и возвращает их индкс если найдены или -1 если нет;
9 index(str, beg=0, end=len(string))
тоже, что и find(), но приводит к ошибке если не найдено;
10 isalnum()
возвращает истину (true), если в строке содержится хотя бы один символ, и все символы являются буквенно-цифровыми;
11 isalpha()
возвращает истину (true), если в строке содержится хотя бы один символ, и все символы являются буквами;
12 isdigit()
возвращает истину (true), если в строке содержится хотя бы один символ, и все символы являются цифрами;
13 islower()
возвращает true, если строка содержит хотя бы один символ и все символы в строке строчные;
14 isnumeric()
возвращает true, если unicode-строка содержит только цифры;
15 isspace()
возвращает true, если строка состоит из пробелов;
16 istitle()
возвращает true, если строка содержит правильно оформленные заглавные буквы (т.е. – только первые в предложении);
17 isupper()
возвращает true, если строка содержит хотя бы один форматированный символ и все символы – заглавные;
18 join(seq)
объединяет заданные в последовательности seq объекты в один список с заданным в строке разделителем;
19 len(string)
возвращает количество символов в строке;
20 ljust(width[, fillchar])
Returns a space-padded string with the original string left-justified to a total of width columns
21 lower()
меняет все заглавные буквы в строке в строчные;
22 lstrip()
удаляет все пробелы в начале строки;
23 maketrans()
создаёт таблицу для перевода функцией translate();
24 max(str)
возвращает наибольший (последний) по алфавиту символ из строки (Eng);
25 min(str)
возвращает наименьший (первый) по алфавиту символ из строки (Eng);
26 replace(old, new [, max])
меняет заданные символы в строке на новые;
27 rfind(str, beg=0,end=len(string))
тоже, что и find(), но ищет в обратном направлении;
28 rindex( str, beg=0, end=len(string))
тоже, что и index(), о ищет в обратном направлении;
29 rjust(width,[, fillchar])
Returns a space-padded string with the original string right-justified to a total of width columns.
30 rstrip()
удаляет все пробелы в конце строки;
31 split(str=””, num=string.count(str))
разделяет строку по заданному в str символу и возвращает новые строки (новыми объектами); разделяет максимум = num раз, если указано;
32 splitlines( num=string.count(‘n’))
Splits string at all (or num) NEWLINEs and returns a list of each line with NEWLINEs removed
33 startswith(str, beg=0,end=len(string))
определяет, начинается ли строка с заданного в str символа; возвращает true если да;
34 strip([chars])
выполняет lstrip() и rstrip();
35 swapcase()
изменяет регистр всех символов на обратный;
36 title()
возвращает “заглавную” версию строки, где все слова начинаются с Заглавной буквы, а остальные символы – строчные;
37 translate(table, deletechars=””)
переводит строку в соответствии с с таблицей перевода;
38 upper()
меняет все строчные символы на прописные;
39 zfill (width)
Returns original string leftpadded with zeros to a total of width characters; intended for numbers, zfill() retains any sign given (less one zero)
40 isdecimal()
возвращает true, если unicode-строка содержит только десятичные символы;


17 860 views

Работа со строками в Python

В этой статье, мы познакомимся с базовыми основами работы со строками в Python. Строка (string) содержит в себе набор символов в кодировке ASCII и относится к неизменяемому типу данных.

Создание строки в Python

Для создания строки в Python существует три способа.

1) В одинарных кавычках (апострофы)

'одинарные кавычки в строке'

2) В двойных кавычках

"двойные кавычки в строке"

3) В тройных одинарных или двойных кавычках

'''строка_1
строка_2
строка_3'''
'строка_1\nстрока_2\nстрока_23\n' // после нажатия ENTER

// выведет на экране
строка_1
строка_2
строка_3

Последний способ применяется для создания многострочной строки. Когда часть строки нужно перенести на новую строку. Внутри программы на месте переноса строк, Python добавляет символ \n. При выводе на экран многострочной строки, в параметрах print('строка_1\nстрока_2\nстрока_23\n'), передается вся эта конструкция.

Нельзя смешивать разновидности кавычек в одной строке, если открыли строку двойной кавычкой, то и закройте строку так же двойной кавычкой.

Обычно строки помещают в переменные, используя оператор присваивания.

new_str = 'переменной присвоили строку'

В Python допускается создание пустой строки.

Конкатенация строк в Python

Операция конкатенация (concatenate) объединяет несколько строк в одну.

a = 'con'
b = 'cat'
c = 'enate'
a + b + c
'concatenate'

Если надо объединить строки с пробелами, то добавляем пробел в кавычках:

d = 'конкатенация'
f = 'строк'
d + ' ' + f
'конкатенация строк'

Как преобразовать число в строку

Попытка склейки разного типа данных, например строки и целого числа, приведет к ошибке. Поэтому, для начала нужно преобразовать число в строку - поставить перед числом оператор str.

'строка' + 10 // неправильно
'строка' + str(10) // правильно
'строка10' // результат

Повторение строки в Python

Как быстро выполнить операцию повторения строки? Очень просто - умножить строку на число повторений.

multi = 'ой-'
print(multi*3)
ой-ой-ой

Длина строки в Python

Операция по вычислению длины строки, довольно часто применяется в программировании. Название функции len - сокращенное от анг. слова length (длина). Функция len() вычисляет количество символов в строке вместе с пробелами. Буквы, знаки пунктуации, пробелы в строке - все это символы.

>>> d_str = 'Длина строки'
>>> len(d_str)
12 // результат

Поиск подстроки в строке в Python

С помощью команды in, можно проверить содержится ли подстрока (символ/ы) в строке, ответом будет истина / ложь.

>>> sub_str = 'поиск подстроки'
>>> 'к' in sub_str
True

>>> s = 'найти подстроку'
>>> 'ю' in s
False

Сравнение строк в Python

К строкам в Python, также можно применять математические операторы сравнения (больше, меньше, равно), однако сравниваются они совсем по другим принципам, нежели числа. Машина сравнивает строки по кодовым значениям символов.

'xy' > 'abc'
True // верно

Здесь у вас наверняка возник вопрос: "Ведь буква "a" стоит выше по алфавиту, чем "x"? В чем подвох? Выведем кодировку первых символов у двух строк. Число 120 явно больше, чем 97.

Строка из заглавных букв, всегда будет меньше строки из маленьких букв. Поскольку кодовые значения больших букв меньше, чем у маленьких.

Заключение

Я слышал не один раз от разных людей, что программирование они начинали изучать с JavaScript или PHP и не сильно в этом преуспели. И сразу после первой неудачной попытки, поставили крест на программировании, посчитали, что нет у них способностей к этому. Позже, они признались, что непонятные вещи в JavaScript / PHP, стали понятными в процессе изучения Python.

Почему так произошло? Я объясняю этот феномен, более простым синтаксисом в Python. Новичок мог позволить себе больше концентрироваться на логике, засчет легкого восприятия синтаксиса. Вот и весь секрет успеха! Не сдавайтесь так просто, попробуйте мой видеокурс по Python, на простом языке и с упражнениями к урокам!


Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 0 ):

Конкатенация строк - операция, "склеивающая" несколько строк в одну. Это нельзя назвать особенностью языка, поскольку она присутствует и в PHP, и в Java и много где еще. Для сегодняшнего топа я собрал все способы конкатенации, кроме самых нелепых. Представляю вашему вниманию 5 способов конкатенации строк в Python 3. Сегодня мы рассмотрим варианты множественной конкатенации с применением соединительной строки.

Начнем с проверенной классики - оператора сложения для последовательной конкатенации. Думаю, всем известно, как это работает. Недостаток данного способа - в функции должно быть фиксированное число строк. Вы должны точно знать, сколько в списке строк. Я надумал 2 варианта реализации. Первый - с передачей в аргументы функции всех строк через запятую:

def conc1_1(one, tho, three, four, symbol): return one + symbol + two + symbol + three + symbol + four

Второй - со списком строк в аргументах:

def conc1_2(strings, symbol): return strings[0] + symbol + strings[1] + symbol + strings[2] + symbol + strings[3]

Здесь мы используем строковый метод join(), выполняющий конкатенацию с использованием соединительной строки. Это самое короткий и логичный ответ на такой случай:

Если нам не известно количество строк в списке, и почему-то мы не используем метод join() (не могу себе представить такую ситуацию), то этот вариант для нас. Он аналогичен работе метода join()

Как это работает? Присваиваем переменной результата значение первой строки из списка и поочередно конкатенируем к нему соединительный символ и следующие в списке строки, пока не закончится список:

def conc3(strings, symbol): res = strings[0] for i in strings[1::]: res = res + symbol + i return res

Давайте вспомним, что с версии Python 2.6 существует метод format(), предоставляющий возможности форматирования строк. Строки из его аргументов подставляются в исходную строку вместо <>. Поставив рядом две и более пары фигурных скобок, можно соединить 2 и более строк. Аргументы могут быть по умолчанию, а могут быть нумерованными или именованными.

Я написал 2 варианта программы с использованием аргументов по умолчанию и нумерованных:

def conc4_1(strings, symbol): res = strings[0] for i in strings[1::]: res = "<><><>".format(res, symbol, i) return res

def conc4_2(strings, symbol): res = strings[0] for i in strings[1::]: res = "<0>".format(res, symbol, i) return res

А здесь напомню про форматирование строк без метода format(), позаимствованное из C (это я прочитал на форуме). Работает оно точно так же, как и встроенный метод, но не позволяет передавать нумерованные и именованные аргументы. В общем вот:

def conc5(strings, symbol): res = strings[0] for i in strings[1::]: res = "%s%s%s" % (res, symbol, i) return res

Примечание: кроме всех указанных способов, я что-то написал. и сам не до конца понял, что я написал. Затем я понял, что накодил чушь. Я проверил, заранее говорю - этот способ самый медленный из всех, поэтому я решил не включать его в основной топ, но все же, вот он:

def conc6(strings, symbol): res = strings[0] list_of_strings = list(strings) for i in range(1, len(strings)): list_of_strings.insert(i + i - 1, symbol) for i in list_of_strings[1::]: res = res + i return res

Для начала - как измерить время работы программы? Об этом я расскажу в следующей статье. Ну а пока что измерим время работы данного куска кода, где i - одна из шести функций (conc1_2, conc2, conc3, conc4_1, conc4_2, conc5):

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

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

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

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

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

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

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

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

Читайте также: