ENote
  • ✨Home
    • Відмова від відповідальності
  • Progr
    • Python
      • Модулі
        • pip
        • cgitb
        • datetime
          • Класс datetime() модуля datetime
            • Методы объекта datetime.datetime()
            • datetime.datetime examples
          • Класс timedelta() модуля datetime
            • datetime.timedelta examples
          • Класс date() модуля datetime
            • datetime.date examples
          • Класс time() модуля datetime
            • Формат для функций .strftime() и .strptime(). модуля datetime
        • os.path
        • pathlib
          • pathlib to str
        • subproces
        • os
        • Jinja
          • Синтаксис шаблонів Jinja
          • Клас Environment()
          • Простой пример cgi-скрипта c Jinja-шаблоном
          • Создание переменных
            • Як оновити глобальну змінну зсередини оператора IF / ELSE або циклу FOR
          • Фільтри і методи
          • Число у рядок, slices
          • Вбудовані фільтри Jinja2
        • re
          • re.search - example
          • re.findall - example
        • email / smtplib
          • Как отправлять электронные письма с помощью Python
        • requests
          • Як зберегти та завантажити файли cookie в запитах Python?
          • Извлечение и установка cookies с модулем requests в Python
          • Links
        • http.cookies
          • Всё о работе с cookie в Python — класс http.cookies
        • xlrd
        • xlwt
        • borb
          • ChunkOfText
          • send_usage_statistics
          • borb clear
          • 2.1.3 vs 2.1.15
          • QR-code
          • Залежності borb
        • JSON
          • Кирилиця в JSON
        • matplotlib
        • argparse
        • click
        • configparser
        • traceback
        • sys
          • exit()
        • mysql-connector-python
        • logging
        • icrawler
        • Auto Plates
        • rembg
        • random
      • Strings
        • Built-in methods
        • Форматування виводу
        • Початкові нулі
        • Рядок в число
      • list
        • Об’єднання списків
        • list.sort(), sorted()
        • list.reverse(), reversed()
        • all(), any()
        • sum(), min(), max()
        • map(), filter(), reduce()
        • join(), split()
      • tuple
      • dict
        • Об'єднання / злиття словників
        • Сортування словника Python: значення, ключі тощо
      • set
      • class Enum
      • Середнє арифметичне
      • Virtual environment
        • web-app
      • type(), isinstance()
      • __main__
      • Files & Dirs
        • Try except for exception handling
        • Cписок файлов директории
        • User Home Dir
        • Copy file
      • *args, **qwargs
      • Links
      • Область видимости
      • Handling a File Error
      • assert
      • if
      • Числа
        • Округлення чисел
        • Отримати число з рядка
      • Обработка исключений в Python
      • Файлы и сериализация данных
      • OOP
      • Net and Web
      • Структура проекта на Python
      • Распаковка итерируемых объектов
      • Links
      • Algorithms
      • Python exit commands: quit(), exit(), sys.exit() and os._exit()
      • Цикли for / while
      • uuid
    • JavaScript
      • String
        • replaceAll() polyfill
        • Шаблонные строки
      • Array
        • Все способы перебора массива в JavaScript
      • Object
      • document.location
      • RegExp
      • Examples
        • Вычисление остатка от деления
        • Остаток от деления и деление без остатка
        • Округление числа
      • XMLHttpRequest
      • alert, prompt, confirm
      • onclick
      • hidden, display:none
      • LocalStorage, sessionStorage
      • null, undefined
      • cookies (js)
      • var, let и const
        • var vs let
        • const
      • Модифікація DOM
        • DOM select
      • JSON
        • Try
      • fetch
      • typeof
      • FormData не включає disabled набори полів
      • FormData, fdata
      • Більше одного відео YouTube на одній сторінці
    • HTML, CSS
      • favicon
      • Деякі спецсимволи
      • meta
      • ASCII table
      • lang
      • Псевдоелементи ::after і ::before
      • Cursor
      • Об использовании нестандартных пробелов
      • Картинка фоном
      • Безпечні веб-шрифти
      • Завжди внизу, незалежно від пропорцій екрану
      • напівпрозорий елемент
      • Символи з тінью
      • SVG (bootstrap)
      • rel = canonical
      • link stylesheet: integrity & crossorigin
      • rel = noopener
    • Bootstrap
      • Form Validate
      • Password show/hide
    • Errors
  • Dev
    • Git
      • clone
      • git-scm (book)
      • git config
        • files .git*
        • core.filemode
        • core.sharedRepository
      • .gitignore
      • .gitkeep
      • Видалити з репозиторію
        • Видалений файл з однієї гілки...
      • Пам’ятка
        • Перегляд історії комітів
        • Скасувати git add
        • revert
        • Скасувати внесені зміни у файл
        • Додати до коміту файл
        • Видалити історію попередніх коммітів, та почати "з нуля"
        • Додати файли в останній коміт
      • Робота з гілками
        • Порівняти гілки
      • Git за полчаса
      • Три розділи проєкту Git
      • Merge conflict
      • Pull error
        • Git Error: You have divergent branches...
      • diff
      • Video
      • Merge скасувати
      • .gitignore: Permission denied
    • GitHub
      • SSH-підключення до GitHub
      • Перенести на сервер локальный репозиторий
      • Перенести на сервер репозиторій разом з історією
      • Створення змісту
    • Security
      • robots.txt
      • Cookies
    • Аутентифікація і cookies
      • ChatGPT
  • data
    • MySQL
      • MyISAM vs InnoDB
      • Типи даних
        • NULL (todo)
        • TIMESTAMP
        • YEAR
        • JSON
        • Требования к памяти для символьных типов
        • Поиск записей в таблице, которым нет соответствия в другой
      • Приклад створення БД, та користувача
        • Права для пользователей
      • Переглянути всі індекси таблиці
      • Копіювання, клонування таблиць
      • TEMPORARY TABLE
      • JOIN
      • ALTER TABLE
      • AUTO_INCREMENT
        • AUTO_INCREMENT у складовому індексі
      • LIMIT
        • Использование MySQL LIMIT
      • 10 Примеров входной загрузки данных из текстового файла в таблицы MySQL
      • Рішення
        • Выявление и удаление несвязанных записей
        • Выборка произвольных записей
        • Коректне сортування українських літер
        • Найти записи, которые присутствуют в одной таблице и отсутствуют во второй
        • Как удобно посмотреть данные...
        • Нахождение "дыр" в нумерации
        • Знайти дубликати полів в одній таблиці
        • Дані колонки 1 табл. перенести в 2 табл.
      • Функції
        • LAST_INSERT_ID()
        • GROUP_CONCAT
        • COUNT + DISTINCT
        • Функции для работы с датами и временем
      • Автоматизируйте создание бэкапов
      • mysqldump
        • Time Zone UTC
      • Результат запиту у файл
      • Результат запиту у змінну
      • Пособие по MySQL на Python
      • Змінні
      • Эмуляция функции row_number() в MySQL
      • Изучаем хранимые процедуры MySQL
      • SELECT DISTINCT
      • Dump всієї бази даних
      • Індекси
      • FOREIGN KEY
      • MAX(), MIN()
      • LENGTH, CHAR_LENGTH
      • Встановлення
    • MariaDB
    • PostgreSQL
      • Работа с базой данных PostgreSQL
      • Работаем с PostgreSQL через командную строку в Linux
    • Domains
      • Життєвий цикл доменів
      • Статус домена
    • SQLite, MySQL и PostgreSQL: сравниваем популярные реляционные СУБД
  • Linux
    • DNS
      • Как в DNS прописать 301 редирект
      • mail
        • SPF
          • Mirohost
        • _dmarc _domainkey
        • DKIM
        • Прописати ключі DKIM в exim
        • Листи з неіснуючим адресатом
    • Server
      • Zomro
        • pip
        • SSH-доступ по ключу (zomro)
        • venv
        • UnicodeEncodeError: 'latin-1' codec can't encode character
        • Mail Ports
        • Редірект з SSL-сертификатом на транзитному сайті
        • Редірект з SSL за допомогою .htaccess
      • Створення нового користувача з привілеями sudo в Ubuntu
      • SSH-доступ по ключу
      • Часовий пояс в Ubuntu 20.04
      • SSH-підключення командний рядок
      • Як встановити Python 3.9 (нижчу) на Ubuntu 22.04
      • Автозагрузка сервисов в Ubuntu
      • Підвищення безпеки SSH
      • Ubuntu Server
        • Art 01
    • Commands
      • adduser
      • apt
      • cat
      • ls
      • tar
      • ln
      • find
      • chmod
      • chown
      • mv
      • dig
      • ping
      • passwd
      • htpasswd
      • umask
      • usermode
      • history
      • cmp
      • chattr +i
    • Config
      • Keyboard
      • windows
      • My kbdswtch
      • Затримка при завантаженні системи
      • Files
        • /etc/resolv.conf
        • /boot/grub/grub.cfg
        • .config/user-dir.dirs
        • /etc/fstab
      • Як встановити шрифти
    • Apache
      • Встановлення
      • Подключить виртуальный хост
      • Файл .htaccess
        • Установка индексного файла
        • Фільтр IP-адрес
        • ModRewrite
          • Заборонити доступ за User-Agent
          • Перенаправити на іншу сторінку
          • Додавати слеш до адреси
        • Включити SSI
        • Виконувати скрипти CGI
        • Тимчасовий перехід з одного домену на інший
      • SSI
      • SSL
      • Відключити старт Apache з системою
      • Помилки
        • Скрипт не працює
        • CGI-скрипт не виводить кирилицю
        • Could not reliably determine
        • Permissions are missing on a component of the path
        • Symbolic link not allowed or link target not accessible
      • AddType, AddLanguage, AddCharset
    • Nginx
      • 301 редирект з www. та http: на https://(без www.)domain
    • Soft
      • SublimeText
        • Plugins
      • Firefox
      • Gwenview
      • inkscape
      • Double Commander
      • nano
      • mc
        • Знайти потрібний файл
      • meld / diffuse
      • hexedit
      • Kazam - відео з екрану
      • VeraCrypt
      • XnView MP
      • LibreOffice
      • xdotool
      • System Load Monitor
      • Battery Monitor
      • qBittorrent
    • Перетворення .RPM в .DEB
    • Bash
      • Конкатенация строк в Bash
      • Page
    • Файлові часові позначки в Linux: atime, mtime, ctime
    • Права доступу для файлів і каталогів
    • Зміна паролю root
    • Быстро удалить огромное количество файлов в каталоге
    • Як узнати версію Linux?
    • USB Flash ext4
    • Clear Cache
    • Доступ до спільної папки на Windows
    • Віртуальні консолі TTY1–TTY6
    • APT. Заборона оновлення
  • Різне
    • GitBook
    • Банковское округление
    • Ім’я користувача Youtube
  • Hard
    • Hardware
      • Acer Extensa
      • Таймер Feron TM22
      • WD My Book World Edition 2Tb
        • FTP
        • SSH
          • Проблеми
        • SSHFS
      • Canon PIXMA E3340
      • Термометри
    • Auto
      • Акумулятор
    • Electro
    • USB Flash recovery
Powered by GitBook
On this page
  1. Progr
  2. Python

Strings

Оператор складання рядків+

+- Оператор конкатенації рядків. Він повертає рядок, що складається з інших рядків, як показано тут:

>>> s = 'py'
>>> t = 'th'
>>> u = 'on'

>>> s + t
'pyth'
>>> s + t + u
'python'

>>> print('Привет, ' + 'Мир!')
Go team!!!

Оператор множення рядків*

*- Оператор створює кілька копій рядка. Якщо sце рядок, а nціле число, будь-який з наступних виразів повертає рядок, що складається з nоб'єднаних копій s:

s * n n * s

Ось приклади множення рядків:

>>> s = 'py.'

>>> s * 4
'py.py.py.py.'
>>> 4 * s
'py.py.py.py.'

Значення множника nмає бути цілим позитивним числом. Воно може бути нулем або негативним, але в цьому випадку результатом буде порожній рядок:

>>> 'py' * -6
''

Якщо ви створите рядкову змінну і перетворите її на порожній рядок, за допомогою 'py' * -6, хтось буде справедливо вважати вас трохи дурним. Але це спрацює.

Оператор приладдя підрядкиin

Python також надає оператор приладдя, який можна використовувати для маніпуляцій з рядками. Оператор inповертає True, якщо підрядок входить у рядок, і Falseякщо немає:

>>> s = 'Python'
>>> s in 'I love Python.'
True
>>> s in 'I love Java.'
False

Є також оператор not in, у якого зворотна логіка:

>>> 'z' not in 'abc'
True
>>> 'z' not in 'xyz'
False

Вбудовані функції рядків у python

Python надає безліч функцій, вбудованих в інтерпретатор. Ось кілька, які працюють із рядками:

Функція

Опис

chr()

Перетворює ціле число на символ

ord()

Перетворює символ на ціле число

len()

Повертає довжину рядка

str()

Змінює тип об'єкта наstring

Детальніше про них нижче.

Функціяord(c) повертає числове значення для символу.

На базовому рівні комп'ютери зберігають усю інформацію як цифр. Для представлення символьних даних використовується схема перекладу, яка містить кожен символ із його репрезентативним номером.

>>> ord('a')
97
>>> ord('#')
35

ASCII прекрасний, але є багато інших мов у світі, які часто зустрічаються. Повний набір символів, які можуть бути представлені в коді, набагато більше звичайних латинських літер, цифр і символом.

Функція ord()також повертає числові значення для символів Юнікод:

>>> ord('€')
8364
>>> ord('∑')
8721

Функціяchr(n) повертає символьне значення для цілого числа.

chr()діє назад ord(). Якщо встановлено числове значення n, chr(n)повертає рядок, що представляє символ n:

>>> chr(97)
'a'
>>> chr(35)
'#'

chr()також обробляє символи Юнікоду:

>>> chr(8364)
'€'
>>> chr(8721)
'∑'

Функціяlen(s) повертає довжину рядка.

len(s)повертає кількість символів у рядку s:

>>> s = 'Простоя строка.'
>>> len(s)
15

Функціяstr(obj) повертає рядкову виставу об'єкта.

Практично будь-який об'єкт Python може бути представлений як рядок. str(obj)повертає рядкове подання об'єкта obj:

>>> str(49.2)
'49.2'
>>> str(3+4j)
'(3+4j)'
>>> str(3 + 29)
'32'
>>> str('py')
'py'

Індексація рядків

Часто в мовах програмування окремі елементи в упорядкованому наборі даних можуть бути доступні за допомогою числового індексу або ключа. Цей процес називається індексація.

У рядках Python є впорядкованими послідовностями символьних даних і можуть бути проіндексовані. Доступ до окремих символів у рядку можна отримати, вказавши ім'я рядка, за яким слідує число у квадратних дужках [].

Індексація рядків починається з нуля: перший символ має індекс 0, наступного 1тощо. Індекс останнього символу в python - "довжина рядка мінус один".

Наприклад, схематичне представлення індексів рядка 'foobar'виглядає так:

Окремі символи доступні за індексом таким чином:

>>> s = 'foobar'

>>> s[0]
'f'
>>> s[1]
'o'
>>> s[3]
'b'
>>> s[5]
'r'

Спроба звернення за індексом більшим len(s) - 1, ніж призводить до помилки IndexError:

>>> s[6]
Traceback (most recent call last):
  File "", line 1, in <module>
    s[6]
IndexError: string index out of range

Індекси рядків можуть бути зазначені негативними числами. У цьому випадку індексування починається з кінця рядка: -1відноситься до останнього символу, -2передостаннього і так далі. Ось така ж діаграма, що показує як позитивні, так і негативні індекси рядка 'foobar':

Ось кілька прикладів негативного індексування:

>>> s = 'foobar'
>>> s[-1]
'r'
>>> s[-2]
'a'
>>> len(s)
6
>>> s[-len(s)] # отрицательная индексация начинается с -1
'f'

Спроба звернення за індексом меншим -len(s), ніж призводить до помилки IndexError:

>>> s[-7]
Traceback (most recent call last):
  File "", line 1, in <module>
    s[-7]
IndexError: string index out of range

Для будь-якого непустого рядка s, код s[len(s)-1]і s[-1]повертають останній символ. Немає індексу, який застосовується до порожнього рядка.

Зрізи рядків

Python також допускає можливість вилучення підрядки з рядка, відому як 'string slice'. Якщо sце рядок, вираз форми s[m:n]повертає частину s, що починається з позиції mі до позиції n, але не включаючи позицію:

>>> s = 'python'
>>> s[2:5]
'tho'

Пам'ятайте: індекси рядків у python починаються з нуля. Перший символ у рядку має індекс 0. Це стосується і зрізу.

Знову ж таки, другий індекс вказує символ, який не включений до результату. Символ 'n'у наведеному вище прикладі. Це може здатися трохи не інтуїтивним, але дає результат: вираз s[m:n]поверне підрядок, який є різницею n - mв даному випадку 5 - 2 = 3.

Якщо пропустити перший індекс, зріз починається з початку рядка. Таким чином, s[:m]= s[0:m]:

>>> s = 'python'
>>> s[:4]
'pyth'
>>> s[0:4]
'pyth'

Аналогічно, якщо опустити другий індекс s[n:], зріз триває від першого індексу до кінця рядка. Це хороша, лаконічна альтернатива більш громіздкою s[n:len(s)]:

>>> s = 'python'
>>> s[2:]
'thon'
>>> s[2:len(s)]
'thon'

Для будь-якого рядка sі будь-якого цілого nчисла ( 0 ≤ n ≤ len(s)), s[:n] + s[n:]буде s:

>>> s = 'python'
>>> s[:4] + s[4:]
'python'
>>> s[:4] + s[4:] == s
True

Пропуск обох індексів повертає вихідний рядок. Це не копія, це посилання на вихідний рядок:

>>> s = 'python'
>>> t = s[:]
>>> id(s)
59598496
>>> id(t)
59598496
>>> s is t
True

Якщо перший індекс у зрізі більший або дорівнює другому індексу, Python повертає порожній рядок. Це ще один не очевидний спосіб згенерувати порожній рядок, якщо ви його шукали:

>>> s[2:2]
''
>>> s[4:2]
''

Негативні індекси можна використовувати і зі зрізами. Ось приклад коду Python:

>>> s = 'python'
>>> s[-5:-2]
'yth'
>>> s[1:4]
'yth'
>>> s[-5:-2] == s[1:4]
True

Крок для зрізу рядка

Існує ще один варіант синтаксису зрізу, про який варто згадати. Додавання додаткового :та третього індексу означає крок, який вказує, скільки символів слід пропустити після отримання кожного символу в зрізі.

Наприклад, для рядка 'python'зріз 0:6:2починається з першого символу і закінчується останнім символом (усім рядком), кожен другий символ пропускається. Це показано на наступній схемі:

Ілюстративний код показаний тут:

>>> s = 'foobar'
>>> s[0:6:2]
'foa'
>>> s[1:6:2]
'obr'

Як і у випадку з простим зрізом, перший та другий індекси можуть бути пропущені:

>>> s = '12345' * 5
>>> s
'1234512345123451234512345'
>>> s[::5]
'11111'
>>> s[4::5]
'55555'

Ви можете також вказати негативне значення кроку, в цьому випадку Python йде з кінця рядка. Початковий/перший індекс повинен бути більшим за кінцевий/другий індекс:

>>> s = 'python'
>>> s[5:0:-2]
'nhy'

У наведеному вище прикладі 5:0:-2означає «почати з останнього символу і робити два кроки назад, але не включаючи перший символ.»

Коли ви йдете назад, якщо перший та другий індекси пропущені, значення за замовчуванням застосовуються так: перший індекс – кінець рядка, а другий індекс – початок. Ось приклад:

>>> s = '12345' * 5
>>> s
'1234512345123451234512345'
>>> s[::-5]
'55555'

Це загальна парадигма для розвороту (reverse) рядка:

>>> s = 'Если так говорит товарищ Наполеон, значит, так оно и есть.'
>>> s[::-1]
'.ьтсе и оно кат ,тичанз ,ноелопаН щиравот тировог кат илсЕ'

Форматування рядка

У Python версії 3.6 було представлено новий спосіб форматування рядків. Ця функція офіційно названа літералом відформатованого рядка, але зазвичай згадується як f-string.

Можливості форматування рядків величезні і не будуть докладно описані тут. Однією простою особливістю f-рядків, які можна почати використовувати відразу, є інтерполяція змінної. Ви можете вказати ім'я змінної безпосередньо у f-рядковому літералі ( f'string'), і python замінить ім'я відповідним значенням.

Наприклад, припустимо, що потрібно відобразити результат арифметичного обчислення. Це можна зробити за допомогою простого print()та оператора ,, що розділяє числові значення та рядкові:

>>> n = 20
>>> m = 25
>>> prod = n * m
>>> print('Произведение', n, 'на', m, 'равно', prod)
Произведение 20 на 25 равно 500

Але це громіздко. Щоб виконати те саме за допомогою f-рядка:

  • Напишіть fабо Fперед лапками рядка. Це вкаже python, що це f-рядок замість стандартного.

  • Вкажіть будь-які змінні для відтворення у фігурних дужках ( {}).

Код з використанням f-string, наведений нижче, виглядає набагато чистіше:

>>> n = 20
>>> m = 25
>>> prod = n * m
>>> print(f'Произведение {n} на {m} равно {prod}')
Произведение 20 на 25 равно 500

Будь-який з трьох типів лапок у python можна використовувати для f-рядка:

>>> var = 'Гав'
>>> print(f'Собака говорит {var}!')
Собака говорит Гав!
>>> print(f"Собака говорит {var}!")
Собака говорит Гав!
>>> print(f'''Собака говорит {var}!''')
Собака говорит Гав!

Зміна рядків

Рядки - один з типів даних, які Python вважає незмінними, що означає неможливість їх змінювати. Як ви побачите нижче, python дає можливість змінювати (замінювати і перезаписувати) рядки.

Такий синтаксис приведе до помилки TypeError:

>>> s = 'python'
>>> s[3] = 't'
Traceback (most recent call last):
  File "", line 1, in <module>
    s[3] = 't'
TypeError: 'str' object does not support item assignment

Насправді немає особливої ​​потреби змінювати рядки. Зазвичай можна легко згенерувати копію вихідного рядка з необхідними змінами. Є мінімум два способи зробити це в python. Ось перший:

>>> s = s[:3] + 't' + s[4:]
>>> s
'pytton'

Є вбудований метод string.replace(x, y):

>>> s = 'python'
>>> s = s.replace('h', 't')
>>> s
'pytton'

PreviousrandomNextBuilt-in methods

Last updated 1 year ago

Найпростіша схема у повсякденному використанні називається . Вона охоплює латинські символи, з якими ми найчастіше працює. Для цих символів ord(c)повертає значення ASCII для символу c:

— це сучасний стандарт, який намагається надати числовий код для всіх можливих символів, усіма можливими мовами, на кожній можливій платформі. Python 3 підтримує Unicode, у тому числі дозволяє використовувати символи Unicode у рядках.

індексація рядка у python
позитивні та негативні індекси рядка
зріз рядка python з кроком 2
ASCII
Unicode