Как сделать одинарные кавычки в питоне
Строки в Python - упорядоченные последовательности символов, используемые для хранения и представления текстовой информации, поэтому с помощью строк можно работать со всем, что может быть представлено в текстовой форме.
Это первая часть о работе со строками, а именно о литералах строк.
Литералы строк
Работа со строками в Python очень удобна. Существует несколько литералов строк, которые мы сейчас и рассмотрим.
Строки в апострофах и в кавычках
Строки в апострофах и в кавычках - одно и то же. Причина наличия двух вариантов в том, чтобы позволить вставлять в литералы строк символы кавычек или апострофов, не используя экранирование.
Экранированные последовательности - служебные символы
Экранированные последовательности позволяют вставить символы, которые сложно ввести с клавиатуры.
"Сырые" строки - подавляют экранирование
Если перед открывающей кавычкой стоит символ 'r' (в любом регистре), то механизм экранирования отключается.
Но, несмотря на назначение, "сырая" строка не может заканчиваться символом обратного слэша. Пути решения:
Строки в тройных апострофах или кавычках
Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд.
Это все о литералах строк и работе с ними. О функциях и методах строк я расскажу в следующей статье.
как заключить переменную в отдельные цитаты в python? Это, наверное, очень просто, но я не могу этого понять! Мне нужно url-кодировать переменную term . Term вводится в форме пользователем и передается в функцию, где он закодирован url term=urllib.quote(term) . Если пользователь ввел" apple computer "в качестве своего термина, после url-кодирования это будет"apple%20comptuer". То, что я хочу сделать, это иметь термин, окруженный одинарными кавычками перед кодировкой url, так что это будет "' apple компьютер", затем после url-кодирования "%23apple%20computer%23". Мне нужно передать термин в url-адрес, и он не будет работать, если я не использую этот синтаксис. Есть предложения?
есть три способа:
форматирование строк в старом стиле
форматирование строк в новом стиле
вы можете просто использовать строку интерполяции:
должно быть то, что вы ищете.
что не так с добавлением одинарных кавычек после того, как он закодирован url? Или, просто добавляя их перед рукой, вы кодируете функцию выше?
Я просто наткнулся на какой-то код, делающий это так:
(в данном случае join() использует term в качестве разделителя для объединения всех элементов, заданных в параметре iterable, в одну строку. Поскольку есть только два элемента, они просто обернуты вокруг одного экземпляра term .)
хотя это вполне читаемо, я все равно считаю его Хак и менее читаемым, чем другие варианты. Поэтому я рекомендую использовать форматирование строк, как упомянутые другими:
Строки (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 867 views
Учимся выполнять основные действия над строковым типом данных в Python: создание, экранирование, конкатенация и умножение, срезы, форматирование, строковые методы.
Учимся выполнять основные действия над строковым типом данных в Python: создание, экранирование, конкатенация и умножение, срезы, форматирование, строковые методы.
Строки в Python - упорядоченные неизменяемые последовательности символов, используемые для хранения и представления текстовой информации, поэтому с помощью строк можно работать со всем, что может быть представлено в текстовой форме.
Последовательности в Python
Последовательность(Sequence Type) — итерируемый контейнер, к элементам которого есть эффективный доступ с использованием целочисленных индексов.
Последовательности могут быть как изменяемыми, так и неизменяемыми. Размерность и состав созданной однажды неизменяемой последовательности не может меняться, вместо этого обычно создаётся новая последовательность.
-
- изменяемая - неизменяемая - неизменяемая
- Строка (str, unicode) - неизменяемая
Строки в одинарных и двойных кавычках - одно и то же. Причина наличия двух вариантов в том, чтобы позволить вставлять в строки символы кавычек, не используя экранирование. Например вот так(обратите внимание на кавычки внутри строки):
2. С помощью тройных кавычек.
Главное достоинство строк в тройных кавычках в том, что их можно использовать для записи многострочных блоков текста. Внутри такой строки возможно присутствие кавычек и апострофов, главное, чтобы не было трех кавычек подряд. Пример:
Экранированные последовательности - это служебные наборы символов, которые позволяют вставить нестандартные символы, которые сложно ввести с клавиатуры.
В таблице перечислены самые часто используемые экранированные последовательности:
"Сырые строки"
Если перед открывающей кавычкой стоит символ 'r' (в любом регистре), то механизм экранирования отключается.
Это может быть нужно, например, в такой ситуации:
str = r'C:\new_file.txt'
Методов для работы со строками довольно много. Может возникнуть вопрос - а как же не запутаться в их многообразии? Ответ на него такой - необходимо структурировать и разбить методы по группам.
Итак, строки в Python поддерживают две группы методов:
-
( list ) ( tuple ) ( range ).
- Обработки двоичных данных( binary data ) и
- Текстовых строк( str ).
x in s; Если элемент присутствует в последовательности, то возвращает True, иначе - False x not in s; Возвращает True, если элемент отсутствует в последовательности. s + t; Конкатенация(сложение) двух последовательностей s * n; Эквивалентно сложению последовательности s с собой n раз s[i]; Возвращает i-й элемент последовательности s[i, j]; Возвращает набор элементов последовательности с индексами из диапазона i
Подытожим
Строки в Python - представители Sequence Type данных. Это значит, что они(наряду со списками, кортежами и диапазонами) поддерживают все операции, приведенные в таблице выше.
Группа 2. Дополнительные методы, которые работают только со строками
Помимо общих операций, которые мы рассмотрели в таблице выше, существуют методы, которые могут быть использованы только для работы с типом str . В ходе урока рассмотрим самые важные и часто используемые из них.
Далее будем рассматривать базовые операции, которые можно выполнять со строками. Начнем со сложения и умножения строк. Они, как мы уже выяснили выше, относятся к группе общих операций над последовательностями. Итак:
1. Оператор сложения строк +
+ — оператор конкатенации строк. Он возвращает строку, состоящую из совокупности других строк.
Например:
2. Оператор умножения строк *
* — оператор создает несколько копий строки. Если str это строка, а n целое число, то будет создано n копий строки str .
Срезы так же относятся к группе общих операций - они используются для всех последовательностей, а значит и для строковых переменных. Рассмотрим подробнее, что это такое и с чем его едят.
Срез (slice) — извлечение из данной строки одного символа или некоторого фрагмента подстроки или подпоследовательности.
Индекс - номер символа в строке (а также в других структурах данных: списках, кортежах). Обратите внимание, что нумерация начинается с 0 . Если указать отрицательное значение индекса, то номер будет отсчитываться с конца, начиная с номера -1 .
Есть три формы срезов:
1. Самая простая форма среза - взятие одного символа строки - S[i] , где S - строка, i - индекс. Пример:
2. Второй тип - срез с двумя параметрами. Т. е. S[a:b] возвращает подстроку, начиная с символа c индексом a до символа с индексом b , не включая его. Если опустить второй параметр (но поставить двоеточие), то срез берется до конца строки. Пример:
3. Срез с тремя параметрами - S[a:b:d] . Третий параметр задает шаг(как в случае с функцией range ), то есть будут взяты символы с индексами a, a + d, a + 2 * d и т. д. Например, при задании значения третьего параметра, равному 2 , в срез попадет каждый второй символ:
И еще разок: строки в Python - это неизменяемый тип данных!
Любые операции среза со строкой создают новые строки и никогда не меняют исходную строку. В Питоне строки вообще являются неизменяемыми, их невозможно изменить. Можно лишь в старую переменную присвоить новую строку.
Задачи по темам
Специфика типа данных словарь (dict) в Python, характеристики. Примеры использования словарей, задачи с решениями.
Строки как тип данных в Python. Основные методы и свойства строк. Примеры работы со строками, задачи с решениями.
Далее давайте рассмотрим методы второй группы, которые были созданы специально для работы с данными типа str . Полный и актуальный список методов можно посмотреть на странице официальной документации. И как вы сможете заметить, их там немало. Мы же с вами перечислим самые полезные из них и популярные, а так же рассмотрим несколько примеров их использования. Итак, список:
Читайте также: