Python удалить последний символ в файле
У меня есть путь к файлу в виде строки и попытка удалить последний '/' с конца.
Я пытаюсь использовать его с регулярным выражением, но он просто удаляет все "/". Есть ли более простой способ просто удалить последний символ без регулярного выражения?
спросил(а) 2020-02-27T18:24:42+03:00 1 год, 8 месяцев назадКак вы говорите, для этого вам не нужно использовать регулярное выражение. Вы можете использовать rstrip .
Если в конце есть более одного / , это приведет к удалению всех из них, например. '/file.jpg//' → '/file.jpg' . С вашего вопроса я предполагаю, что все будет в порядке.
ответил(а) 2020-02-27T18:33:33.917604+03:00 1 год, 8 месяцев назадкак указал @greggo
ответил(а) 2020-02-27T18:24:42+03:00 1 год, 8 месяцев назадВы можете использовать String.rstrip .
ответил(а) 2020-04-03T18:44:46+03:00 1 год, 7 месяцев назадДля использования пути используйте os.path.abspath
ответил(а) 2020-02-27T18:24:42+03:00 1 год, 8 месяцев назадОтвечая на вопрос: чтобы удалить последний символ, просто используйте: string = string[:-1] .
Если вы хотите удалить последний '\', если он есть (или если его несколько):
Если это путь, то используйте функции os.path :
хотя я бы добавил "косую черту" в конце, чтобы предотвратить пропущенное имя файла, если в конце исходной строки нет слэша:
При использовании abspath (если путь не является абсолютным, я думаю,) добавит текущий рабочий каталог в путь.
ответил(а) 2020-03-20T18:41:48.231941+03:00 1 год, 8 месяцев назадНе нужно использовать дорогой regex , если он не нужен,
Используйте шаблон r'(/)(?=$)' , который фиксирует последний / и заменяет на r'' , т.е. Пустой символ.
Чтобы удалить последний символ, просто используйте срез: my_file_path[:-1] . Если вы хотите удалить только определенный набор символов, используйте my_file_path.rstrip('/') . Если вы видите строку в качестве пути к файлу, операция os.path.dirname. Если путь на самом деле является именем файла, я задаюсь вопросом, откуда в первую очередь появилась дополнительная слэш.
ответил(а) 2020-02-27T18:24:42+03:00 1 год, 8 месяцев назадСамый простой способ - использовать срез.
Если x - ваша строковая переменная, тогда x [: - 1] вернет строковую переменную без последнего символа.
(BTW, x [-1] - последний символ в строковой переменной)
Вы ищете
my_file_path = '/home/ro/A_Python_Scripts/flask-auto/myDirectory/scarlett Johanson/1448543562.17.jpg/'
my_file_path = my_file_path [: - 1]
Различные типы методов в строке для удаления или удаления последнего символа из строки в Python, такие как положительный, отрицательный индекс, rstrip и т. Д.
Вступление
Манипуляция строками-самая важная функция python. Вы можете манипулировать строкой с помощью многих методов, таких как методы нарезки строк, циклического перебора элементов и методы строк. Иногда мы приходим к ситуации, когда нам требуется удалить последний символ из строки в Python, так как он добавлен по ошибке. Поэтому здесь мы сосредоточимся на удалении последнего символа из строки.
Различные способы удаления последнего символа из строки в Python
Давайте обсудим некоторые методы, с помощью которых мы можем удалить или удалить последний символ из строки:
1. Использование положительного индекса путем нарезки
Мы можем удалить или удалить последний символ из строки, обратившись к положительному индексу данной строки.
Давайте рассмотрим пример для лучшего понимания концепции:
Выход:
Здесь мы взяли пример строки. Затем мы вычислили длину строки, чтобы получить доступ к последнему символу строки. Наконец, мы использовали нарезку для удаления последнего символа строки, а затем напечатали вывод. Следовательно, мы видели, что нежелательный персонаж был удален.
2. Использование отрицательного индекса путем нарезки
Мы также можем удалить или удалить последний символ из строки, обратившись к отрицательному индексу данной строки.
Давайте рассмотрим пример для лучшего понимания концепции:
Здесь мы взяли пример строки, а затем для удаления последнего символа строки индексация всегда начинается с -1. Отрезав его от индекса -1, мы удалили последний символ строки. Наконец-то мы напечатали результат. Следовательно, мы видели, что нежелательный персонаж был удален.
3. Использование функции rstrip для удаления последнего символа из строки в Python
Строковый метод rstrip используется для удаления символов из правой части заданной ему строки. Поэтому мы будем использовать его для удаления или удаления последнего символа строки. Это можно сделать только в одной строке кода и простым методом удалить последний символ из строки.
Давайте рассмотрим пример для лучшего понимания концепции:
Здесь, во-первых, мы взяли входные данные от пользователя в виде строки. Во-вторых, мы использовали функцию rstrip в данной строке и использовали ее для удаления последнего символа из строки. Наконец-то мы напечатали результат. Следовательно, мы видели, что нежелательный персонаж был удален.
4. Использование цикла for для удаления последнего символа из строки в Python
Мы также можем использовать цикл for для удаления или удаления последнего символа из строки. Мы выведем длину строки из функции len (). Тогда мы возьмем пустую строку. После этого мы запустим цикл от 0 до l2 и добавим строку в пустую строку. Наконец, мы напечатаем вывод в виде оставшейся строки.
Давайте рассмотрим пример для лучшего понимания концепции:
5. Использование функции regex
Мы можем использовать функцию regex() в python, чтобы сопоставить 2 группы в строке, т. е.
- Группа 1: Каждый символ в строке, кроме последних символов.
- Группа 2: Последний символ строки.
Давайте рассмотрим пример для лучшего понимания концепции:
Кроме того, Читайте > > 7 Способы удаления символов из строки в Python
Вывод
В этом уроке мы узнали обо всех методах, с помощью которых мы можем удалить или удалить последний символ строки. Все методы подробно объясняются с помощью примеров. Основным и самым простым методом было использование положительных и отрицательных индексов. Вы можете использовать любой из методов, которые вам нравятся, в соответствии с требованиями вашей программы или проекта.
Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.
Оглавление
Основы строки Python
текст Тип является одним из наиболее распространенных типов и часто называют строка Или, в Python, просто ул . | Отказ
Как объединять строки
Вы можете использовать + Оператор к объединенным строкам.
Как выбрать CHAR
Чтобы выбрать CHAR, используйте [] и укажите положение CHAR.
Положение 0 относится к первой позиции.
Как получить размер строки
Лен () Функция возвращает длину строки.
Как заменить часть строки
заменить () Способ заменяет часть строки другой. В качестве примера давайте заменим «Рио» на «Мар».
Как считать
Укажите, что рассчитывать как аргумент.
В этом случае мы считаем, сколько пробелов существует в «Рио-де-Жанейро», который является 2.
Как повторить строку
Вы можете использовать * Символ, чтобы повторить строку.
Здесь мы умножаем слово «Токио» на 3.
Как разделить строку в Python
Давайте посмотрим некоторые примеры о том, как это сделать.
Пример 1: используйте пробелы в качестве разделителей
В этом примере мы разделяем фразу на пробеле, создавая список с именем my_words с пятью элементами, соответствующими каждому слову в фразе.
Обратите внимание, что по умолчанию Сплит () Метод использует любое последовательное количество пробелов в качестве разделителей. Мы можем изменить код выше:
Выход то же самое, так как у нас есть только один пробел между каждым словом.
Пример 2: пройти разные аргументы в качестве разделителей
При работе с данными очень часто читают некоторые файлы CSV для извлечения информации от них.
Таким образом, вам может потребоваться сохранить некоторые конкретные данные из определенного столбца.
В этом примере мы собираемся использовать Сплит () метод, проходящий в качестве аргумента конкретный разделитель, «;» в таком случае.
Как удалить все белые пробелы в строке в Python
Вам нужно импортировать Re Модуль, который обеспечивает регулярные экспрессии.
Обратите внимание, что \ S представляет не только пространство '' , но и форма корма \ f , линия подачи \ N перевозка возврата \ R , вкладка \ T и вертикальная вкладка \ v Отказ
Таким образом, \ s = [\ f \ n \ r \ t \ v] Отказ
+ Символ называется квантификатором и читается как «один или несколько». Это означает, что в этом случае он будет рассмотрен один или несколько белых пробелов, поскольку он расположен сразу после \ S Отказ
Оригинальная переменная фраза остается такой же. Вы должны назначить новую очищенную строку в новую переменную, Fase_no_space в таком случае.
Как обрабатывать многослойные строки в Python
Тройные цитаты
Чтобы обрабатывать многослойные струны в Python, вы используете тройные цитаты, либо одиноки, либо двойные.
Этот первый пример использует двойные кавычки.
Сейчас так же, как и раньше, но с одиночными цитатами:
Обратите внимание, что оба выхода одинаковы.
Круглые скобки
Давайте посмотрим пример с круглыми скобками.
Как видите, результат не то же самое. Для достижения новых строк я должен добавить \ N , как это:
Вершины
Наконец, обратные косания также являются возможностью.
Уведомление нет места после \ персонаж, как он бросил бы ошибку.
lstrip (): как удалить пробелы и символы с начала строки в Python
Используйте lstrip () Способ удаления пробелов с начала строки.
Обратите внимание, что оригинал Regular_Text Переменная остается неизменным, поэтому вам нужно назначить возврат метода новой переменной, no_space_begin_text в таком случае.
Как удалить символы
lstrip () Метод также принимает определенные символы для удаления в качестве параметров.
RSTRIP (): Как удалить пробелы и символы с конца строки в Python
Используйте RSTRIP () Способ удаления пробелов с конца строки.
Обратите внимание, что оригинал Regular_Text Переменная остается неизменным, поэтому вам нужно назначить возврат метода новой переменной, no_space_end_text в таком случае.
RSTRIP () Метод также принимает определенные символы для удаления в качестве параметров.
Стрип (): как удалить пробелы и символы с начала и конца строки в Python
Используйте полоса () Способ удаления пробелов с самого начала и конца строки.
Обратите внимание, что оригинал Regular_Text Переменная остается неизменным, поэтому вам нужно назначить возврат метода новой переменной, no_space_text в таком случае.
полоса () Метод также принимает определенные символы для удаления в качестве параметров.
Как сделать целый ряд строчной буквы в Python
Используйте ниже () Способ преобразования целой строки в строчные буквы.
Обратите внимание, что оригинал Regular_Text Переменная остается неизменным, поэтому вам нужно назначить возврат метода новой переменной, lower_case_text в таком случае.
Как сделать целый строковый прописными буквами в Python
Используйте Верхний () Способ преобразования целой строки в прописные буквы.
Обратите внимание, что оригинал Regular_Text Переменная остается неизменным, поэтому вам нужно назначить возврат метода новой переменной, experty_case_Text в таком случае.
Как использовать титульный случай в Python
Используйте Название () Способ преобразования первой буквы в каждое слово в верхний регистр и остальные символы в нижний регистр.
Обратите внимание, что оригинал Regular_Text Переменная остается неизменным, поэтому вам нужно назначить возврат метода новой переменной, title_case_text в таком случае.
Как использовать чехол Swap в Python
Используйте Свапка () Способ преобразования верхних символов регистра в нижний регистр и наоборот.
Обратите внимание, что оригинал Regular_Text Переменная остается неизменным, поэтому вам нужно назначить возврат метода новой переменной, Smokt_Case_Text в таком случае.
Как проверить, пустая строка в Python
Питоновый способ проверить, если строка пусто использует не оператор.
Чтобы проверить напротив и посмотреть, является ли строка не Пусто, сделайте это:
Rjust (): как правильно озвучить строку в Python
Обратите внимание на пробелы во второй строке. Слово «Beach» имеет 5 символов, что дает 27 пространства для заполнения пустым пространством.
Оригинал слово Переменная остается неизменным, поэтому нам нужно назначить возврат метода новой переменной, word_justied в таком случае.
Rjust () Также принимает определенный символ в качестве параметра для заполнения оставшегося пространства.
Похоже на первую ситуацию, у меня есть 27 $ Знаки, чтобы сделать его 32, когда я считаю 5 символов, содержащихся в словом «Beach».
Обратите внимание на пробелы во второй строке. Слово «Beach» имеет 5 символов, что дает 27 пространства для заполнения пустым пространством.
Оригинал слово Переменная остается неизменным, поэтому нам нужно назначить возврат метода новой переменной, word_justied в таком случае.
ljust () Также принимает определенный символ в качестве параметра для заполнения оставшегося пространства.
Похоже на первую ситуацию, у меня есть 27 $ Знаки, чтобы сделать его 32, когда я считаю 5 символов, содержащихся в словом «Beach».
Isalnum (): Как проверить буквенно-цифровые символы только в строке в Python
Используйте Isalnum () Метод проверки, содержит ли строка только буквенно-цифровые символы.
ISPRINTABLE (): Как проверить для печатных игр в строке в Python
Используйте Isprintable () Метод проверки, являются ли символы в строке печати.
Обратите внимание, что в первых 4 примерах каждый символ занимает некоторое пространство, даже если это пустое место, как вы можете видеть в первом примере.
Последний пример возвращается Ложь Показаны 5 видов символов, которые непечатаются: Form Feed \ f , линия подачи \ N перевозка возврата \ R , вкладка \ T и вертикальная вкладка \ v Отказ
Некоторые из этих «невидимых» персонажей могут испортить свою печать, давая вам неожиданный выход, даже когда все выглядит «хорошо».
ISSPACE (): Как проверить белое пространство только в строке в Python
Используйте ISSPACE () Метод проверки, являются ли символы в строке все белые пробелы.
Уведомление во втором примере того, что белое пространство не только '' , но и форма корма \ f , линия подачи \ N перевозка возврата \ R , вкладка \ T и вертикальная вкладка \ v Отказ
StartSwith (): Как проверить, начинается ли строка с определенного значения в Python
Используйте StartSwith () Метод проверки, начинается ли строка с определенного значения.
Вы также можете установить, если вы хотите начать совпадение в определенной позиции и завершить его в другом определенном положении строки.
Наконец, вы можете проверить несколько строк одновременно. Вместо того, чтобы использовать какую-то цикл, вы можете использовать кортеж в качестве аргумента со всеми строками, которые вы хотите соответствовать.
Capitalize (): Как установить первый персонаж только в верхний регистр в строке в Python
Используйте капитализировать () Способ преобразования в верхний регистр только первый символ в строке.
Остальная часть строки преобразуется в нижний регистр.
Обратите внимание, что любой счет символов, такой как номер или специальный символ. Так что в последнем примере 3 Является ли первым символом и не имеет никаких изменений, в то время как остальная часть строки преобразуется в нижний регистр.
Isupper (): Как проверить на верхний регистр только в строке в Python
Используйте Isupper () Метод проверки, если символы в строке все в верхнем регистре.
Если вы заметите последний пример, номера и специальные символы, такие как @ и $ В строке не имеют никакой разницы и Isupper () все еще возвращается Правда Поскольку метод проверяет только алфавитные символы.
Основной синтаксис: rings.join (потенциал)
Согласно синтаксису выше, строка требуется в качестве сепаратора.
Способ возвращает новую строку, что означает, что оригинальный итератор остается неизменным.
Давайте посмотрим некоторые примеры с: строка, список, кортеж, набор и словарь
Присоединиться (): строки
У меня простой список трех предметов, представляющих автомобильные бренды.
Он объединяет все предметы в списке и ставит $ знак между ними.
При попытке объединить int Элементы, ошибка поднимается.
Присоединиться (): кортежи
Текет следует за тем же обоснованным, поскольку пример списка объясняется ранее.
Опять же, я использую $ Знак как сепаратор.
Присоединиться (): наборы
Поскольку набор также такой же, как кортеж и список, я использовал другой сепаратор в этом примере.
Присоединиться (): словари
В этом примере показано конконтрация клавиш.
Сплитлины (): Как разделить строку на перерывах линии в Python
Используйте Сплитлины () Способ разделить строку на разрывах линии.
Возвращение метода представляет собой список линий.
Если вы хотите сохранить перерыв линии, Сплитлины () Принимает параметр, который можно установить на Правда , по умолчанию есть Ложь Отказ
islower (): Как проверить на нижний регистр только в строке в Python
Используйте islower () Метод проверки. Если символы в строке все в нижнем регистре.
Если вы заметите в последнем примере, номера и специальные символы, такие как @ и $ В строке не имеют никакой разницы и islower () все еще возвращается Правда Поскольку метод проверяет только алфавитные символы.
ISNUMERIC (): Как проверить числовые численности только в строке в Python
Используйте Isnumeric () Метод проверки, содержит ли строка только числовые символы.
Числовые включают число от 0 до 9 и комбинации их, римских цифр, суперскрипет, подписку, фракций и других вариаций.
isdecimal () более строгим, чем Isdigit () , который в свою очередь строчен, чем Isnumeric () Отказ
ISDIGIT (): Как проверить цифры только в строке в Python
Используйте Isdigit () Метод проверки, содержит ли строка только цифры.
Цифры включают номера от 0 до 9, а также Superscripts и подписи.
isdecimal () более строгим, чем Isdigit () , который в свою очередь строчен, чем Isnumeric () Отказ
Isdecimal (): Как проверить десятичные дроби только в строке в Python
Используйте isdecimal () Способ проверки, если строка содержит только десятичные дроби, то есть только номера от 0 до 9 и комбинации этих чисел.
Подписки, суперскрипты, римские цифры и другие вариации будут возвращены как Ложь Отказ
isdecimal () больше строго, чем Isdigit () , который в свою очередь более строгим, чем Isnumeric () Отказ
ISALPHA (): Как проверить буквы только в строке в Python
Используйте Isalpha () Способ проверки, содержит ли строка только буквы.
Istitle (): Как проверить, начинается ли каждое слово с верхнего регистра в строке в Python
Используйте ISTITLE () Метод проверки Если первый символ в каждом слове в строке является прописным регистром, а другие символы строчные.
Если вы заметите в последнем примере, номера и специальные символы, такие как @ и $ В строке не имеют никакой разницы и ISTITLE () все еще возвращается Правда Поскольку метод проверяет только алфавитные символы.
ExpandTabs (): Как установить количество пробелов для вкладки в строке в Python
Используйте ExpandTabs () Метод для установки количества пробелов для вкладки.
Вы можете установить любое количество пробелов, но когда никакой аргумент не приведен, по умолчанию используется 8.
Базовое использование
Обратите внимание на 7 пробелов между буквами B и R.
\ T находится в положении два после одного символа, поэтому он будет заменен на 7 пробелов.
Давайте посмотрим на другой пример.
С Мир имеет четыре персонажа, \ T Заменяется 4 пробелами, чтобы сделать его в общей сложности 8, размер вкладки по умолчанию.
Пользовательские табуляции
Можно установить TABSIZE по мере необходимости.
Центр (): Как центрировать строку в Python
Используйте Центр () Способ для центра строки.
Обратите внимание на пробелы во второй строке. Слово «Beach» имеет 5 символов, что дает 28 пробелов для заполнения пустым пространством, 14 пробелами до 14 лет, чтобы центрировать слово.
Оригинал слово Переменная остается неизменным, поэтому нам нужно назначить возврат метода новой переменной, Word_centered в таком случае.
Центр () Также принимает определенный символ в качестве параметра для заполнения оставшегося пространства.
Похоже на первую ситуацию, у меня 14 $ В каждой стороне, чтобы сделать его 33, когда я считаю 5 символов, содержащихся в словом «Beach».
zfill (): Как добавить нули в строку в Python
Используйте zfill () Вставить нули 0 в начале строки.
Количество нулей дается числом, прошедшим, как аргумент, минус количество символов в строке.
Слово «Beach» имеет 5 символов, что дает 27 пространства для заполнения нулями, чтобы сделать его 32, как указано в переменной Size_String.
Оригинал слово Переменная остается неизменным, поэтому нам нужно назначить возврат метода новой переменной, Word_Zeros в таком случае.
Также обратите внимание, что если аргумент меньше, чем количество символов в строке, ничего не меняется.
В приведенном ниже примере «Beach» имеет 5 символов, и мы хотим добавить нули, пока не достигнет Size_String Из 4, что означает, что нечего делать.
Найти (): Как проверить, имеет ли строка определенную подстроку в Python
Используйте Найти () Метод проверки, имеет ли строка определенную подстроку.
Метод возвращает индекс первого вхождения данного значения.
Помните, что счет индекса начинается в 0.
Если значение не найдено, он вернется -1 Отказ
Вы также можете начать поиск в определенную позицию и завершить его в другом определенном положении строки.
Как удалить префикс или суффикс в строке в Python
С Python 3.9 тип строки будет иметь два новых метода.
Вы можете специально удалить префикс из строки с помощью RemovePrefix () Метод:
Или удалить суффикс, используя RemoSuffix () Метод:
Просто пройдите в качестве аргумента, который будет считать текст как префикс или суффикс, который будет удален, и метод вернет новую строку в результате.
Я рекомендую прочитать PEP 616 В официальной документации, если вам интересно, как эти функции добавляются на язык.
Это довольно простое изменение и очень дружелюбное для начинающих, чтобы привыкнуть к чтению официальной документации.
lstrip () vs readleprefix () и rstrip () vs removeuffix ()
Это вызывает путаницу для многих людей.
Легко посмотреть на lstrip () и RemovePrefix () И удивляйтесь, какая реальная разница между ними.
В то время как RemovePrefix () Удалю только точное совпадение:
Вы можете использовать ту же обоснование, чтобы различать RSTRIP () и RemoSuffix () Отказ
И как бонус, на всякий случай, если вы никогда не работали с регулярными выражениями раньше, будьте благодарны, что у вас есть полоса () Обрезать наборы символов из строки вместо регулярного выражения:
Как нарезка работает в Python
Нарезка является одним из самых полезных инструментов на языке Python.
Таким образом, важно иметь хорошее понимание того, как это работает.
Основная нажатие на нарезю
Допустим, у нас есть массив под названием «Список».
- Начать: Где вы хотите нажатие на наличие
- Стоп: до тех пор, пока вы хотите, чтобы наслаиться, но помните ценность Стоп не включен
- Шаг: Если вы хотите пропустить элемент, то использование по умолчанию 1, поэтому вы проходите все элементы в массиве
Индексы
Когда нарезка, индексы указываются в между персонажи, не на персонажах.
Для слова «фильм»:
Примеры нарезки в Python
У нас есть переменная, содержащая строку «фильм», как так:
Все приведенные ниже примеры будут применены к этому слову.
Пример 1.
Чтобы получить первые два персонажа:
Обратите внимание, что мы могли бы использовать 0 для обозначения начала, но это не нужно.
Пример 2.
Пример 3.
Пропуская буквы с шагом 2:
Как изменить строку в Python
Чтобы изменить строку, используйте синтаксис ломтика:
Slice Syntax позволяет вам установить шаг, который является -1 в примере.
Если вы установите шаг в -1 У вас есть противоположное, верните 1 символ за раз.
Таким образом, вы начинаете в положении последнего символа и двигайтесь назад к первому символу в положении 0.
Самый простой - это
как указал @greggo
Как вы говорите, для этого не нужно использовать регулярное выражение. Ты можешь использовать rstrip .
Если их больше одного / в конце это удалит все из них, например '/file.jpg//' -> '/file.jpg' . Судя по вашему вопросу, я полагаю, что это будет нормально.
Вы могли бы использовать String.rstrip .
Для пути используйте os.path.abspath
- os.path.abspath() также превратит все косые черты в обратную косую черту на платформах Windows, поэтому это не всегда может быть правильным решением.
- кроме случаев, когда реальная цель имеет действительный путь (даже в Windows)
- Ты прав. Это путь. По какой-то причине я подумал, что это URL. abspath() здесь уместно.
Самый простой способ - использовать срез. Если x - ваша строковая переменная, то x [: - 1] вернет строковую переменную без последнего символа. (Кстати, x [-1] - последний символ в строковой переменной) Вы ищете
Отвечая на вопрос: чтобы удалить последний символ, просто используйте: string = string[:-1] .
Если это путь, используйте os.path функции:
хотя я бы добавил в конце косую черту, чтобы не пропустить имя файла, если в конце исходной строки нет косой черты:
При использовании abspath (если путь не является абсолютным, я думаю) добавит текущий рабочий каталог к пути.
Чтобы удалить последний символ, просто используйте срез: my_file_path[:-1] . Если вы хотите удалить только определенный набор символов, используйте my_file_path.rstrip('/') . Если вы видите строку как путь к файлу, операция - os.path.dirname. Если путь на самом деле является именем файла, мне, скорее, интересно, откуда вообще взялась лишняя косая черта.
Не нужно использовать дорого regex , если это не нужно, попробуйте - Используйте r'(/)(?=$)' шаблон, который захватывается последним / и заменить на r'' т.е. пустой символ.
Читайте также: