Python как удалить строку в консоли

Обновлено: 07.07.2024

допустим, у меня есть текстовый файл, полный псевдонимов, как я могу удалить конкретный псевдоним из этого файла?

предполагая, что ваш файл имеет формат одного псевдонима на строку, используйте это.

Сначала откройте файл:

далее, Получить все строки из файла:

теперь вы можете закрыть файл:

и снова открыть его в режиме записи:

затем напишите свои строки обратно, кроме строки, которую вы хотите удалить. Возможно, вы захотите изменить "\n" к любой строке, заканчивающейся вашим файлом.

At конец, закройте файл снова.

решение этой проблемы только один:

Это решение открывает файл в режиме r / w ("r+") и использует seek для сброса F-указателя, а затем усекает, чтобы удалить все после последней записи.

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

вот именно! В одном цикле, и только вы можете сделать то же самое. Это будет намного быстрее.

это "вилка" от @Lotherответ (который я считаю, что следует считать правильным ответом).


Для такого файла:

эта вилка из решения Lother отлично работает:

  • with open , которые отбрасывают использование f.close()
  • более яснее if/else для оценки, если строка отсутствует в текущей строке

проблема с чтением строк в первом проходе и внесением изменений (удаление определенных строк) во втором проходе заключается в том, что если размеры файлов огромны, у вас закончится ОЗУ. Вместо этого лучше читать строки одну за другой и записывать их в отдельный файл, исключая те, которые вам не нужны. Я запустил этот подход с файлами размером 12-50 ГБ, и использование ОЗУ остается почти постоянным. Только циклы CPU показывают, что обработка продолжается.

если вы используете Linux, вы можете попробовать следующий подход.
Предположим, у вас есть текстовый файл с именем animal.txt :

удалить первую строку:

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

вот как я мог бы это сделать:

Я предполагаю, что nicknames.csv содержит такие данные, как:

затем загрузите файл в список:

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

наконец, записать результат обратно в файл:

не очень хорошо решить, если вы поместите весь файл в память, я знаю, что в настоящее время у всех есть тонны памяти, но подумайте, если файл несколько ГБ журналов или что-то еще.

лучший способ скопировать его строка за строкой в новый файл, чем удалить первый или что-то вроде этого

В общем, вы не можете; вы должны написать весь файл снова (по крайней мере, с момента изменения до конца).

в некоторых случаях вы можете сделать лучше, чем это -

Если все ваши элементы данных одинаковой длины и в определенном порядке, и вы знаете смещение того, от которого вы хотите избавиться, вы можете скопировать последний элемент поверх того, который будет удален, и усечь файл перед последним элементом;

или вы можете просто перезаписать фрагмент данных с помощью значения "это плохие данные, пропустите его" или сохраните флаг "этот элемент был удален"в сохраненных элементах данных, чтобы вы могли пометить его удаленным без изменения файла.

Это, вероятно, перебор для коротких документов (что-нибудь под 100 КБ?).

Мне понравился подход fileinput, как описано в этот ответ: удаление строки из текстового файла (python)

скажем, например, у меня есть файл, в котором есть пустые строки, и я хочу удалить пустые строки, Вот как я его решил:

Примечание: пустые строки в моем случае имели длину 1

Наверное, вы уже получили правильный ответ,но вот мой. Вместо того, чтобы использовать список для сбора нефильтрованных данных (что readlines() метод), я использую два файла. Один предназначен для хранения основных данных, а второй-для фильтрации данных при удалении определенной строки. Вот код:

надеюсь, вы найдете это полезным! :)

сохраните строки файла в списке, затем удалите из списка строку, которую вы хотите удалить, и запишите оставшиеся строки в новый файл

возьмите содержимое файла, разделите его по новой строке на кортеж. Затем получите доступ к номеру строки кортежа, присоединитесь к кортежу результата и перезапишите файл.

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

Что такое строка в Python?

Каждый символ кодируется символом ASCII или Unicode. Таким образом, мы можем сказать, что строки Python также называются набором символов Unicode.

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

Рассмотрим следующий пример на Python для создания строки.

Проверим тип переменной str с помощью скрипта

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

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

Индексирование и разбивка строк

Как и в других языках, индексирование строк Python начинается с 0. Например, строка «HELLO» индексируется, как показано на рисунке ниже.

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

Рассмотрим следующий пример:

Как показано в Python, оператор slice [] используется для доступа к отдельным символам строки. Однако мы можем использовать оператор:(двоеточие) в Python для доступа к подстроке из данной строки. Рассмотрим следующий пример.

Доступ к подстроке

Рассмотрим следующий пример:

Мы можем сделать отрицательную нарезку строки; она начинается с крайнего правого символа, который обозначается как -1. Второй крайний правый индекс указывает -2 и так далее. Рассмотрим следующее изображение.

Отрицательная нарезка строки

Рассмотрим следующий пример:

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

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

Рассмотрим следующий пример.

Однако в примере 1 строку str можно полностью присвоить новому содержимому, это указано в следующем примере.

Удаление строки

Как мы знаем, строки неизменяемы. Мы не можем удалить символы из строки. Но мы можем удалить всю строку с помощью ключевого слова del.

Теперь мы удаляем всю строку.

Строковые операторы

Оператор Описание
+ Он известен как оператор конкатенации, используемый для соединения строк по обе стороны от оператора.
* Известен как оператор повторения. Он объединяет несколько копий одной и той же строки.
[] оператор среза. Он используется для доступа к подстрокам определенной строки.
[:] оператор среза диапазона, используется для доступа к символам из указанного диапазона.
in Оператор членства. Он возвращается, если в указанной строке присутствует определенная подстрока.
not in Также является оператором членства и выполняет функцию, обратную in. Он возвращает истину, если в указанной строке отсутствует конкретная подстрока.
r / R Используется для указания необработанной строки. Необработанные строки применяются в тех случаях, когда нам нужно вывести фактическое значение escape-символов, таких как «C: // python». Чтобы определить любую строку как необработанную, за символом r или R следует строка.
% Необходим для форматирования строк. Применяет спецификаторы формата, используемые в программировании на C, такие как %d или %f, для сопоставления их значений в python. Мы еще обсудим, как выполняется форматирование в Python.

Рассмотрим следующий пример, чтобы понять реальное использование операторов Python.

Форматирование строки Python

Управляющая последовательность

Рассмотрим следующий пример, чтобы понять реальное использование операторов Python.

Мы можем использовать тройные кавычки для решения этой проблемы, но Python предоставляет escape-последовательность.

Символ обратной косой черты(/) обозначает escape-последовательность. За обратной косой чертой может следовать специальный символ, который интерпретируется по-разному. Одиночные кавычки внутри строки должны быть экранированы. Мы можем применить то же самое, что и в двойных кавычках.

Список escape-последовательностей приведен ниже:

Вот простой пример escape-последовательности.

Мы можем игнорировать escape-последовательность из данной строки, используя необработанную строку. Мы можем сделать это, написав r или R перед строкой. Рассмотрим следующий пример.

Метод format()

Форматирование строки Python с использованием оператора %

Python позволяет нам использовать спецификаторы формата, используемые в инструкции printf языка C. Спецификаторы формата в Python обрабатываются так же, как и в C. Однако Python предоставляет дополнительный оператор%, который используется в качестве интерфейса между спецификаторами формата и их значениями. Другими словами, мы можем сказать, что он связывает спецификаторы формата со значениями.

Рассмотрим следующий пример.

Строковые функции Python

Python предоставляет различные встроенные функции, которые используются для обработки строк.

Другими словами, это функция строки, которая удаляет символы как с левого, так и с правого конца строки, указывая набор символов для функции strip() в качестве аргумента. По умолчанию она удаляет пробелы из начальной и конечной строки, если в функцию strip() в Python не передается аргумент.

Функция strip() в Python

Синтаксис

Параметр:

Возвращаемое значение: возвращает копию исходной строки, удаляя набор символов или пробелов из исходной строки.

Использование функции strip() для удаления символов из заданной строки

Рассмотрим пример выполнения функции strip() путем удаления начальных или конечных символов из заданной строки в Python.

Использование strip() в Python для удаления пробелов из заданной строки

Рассмотрим пример выполнения функции strip() путем удаления начального или конечного пробела из заданной строки в Python.

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

Программа для получения любой строки от пользователя и удаления любых символов с помощью функции strip()

Для чего используется?

Ниже приведены причины использования данной функции в Python:

  1. Помогает удалить символы из начальной и конечной исходной строки на основе символов, переданных в функцию strip().
  2. Если пользователь не передает никаких символов в функцию, по умолчанию она удаляет только пробелы с обоих концов строки.
  3. Если в начале или в конце исходной строки нет пробела, он возвращает исходную строку, не изменяя ее.
  4. Если переданный символ не соответствует исходной строке, функция возвращает исходную строку.

Вывод

Эта функция используется для удаления символов или пробелов из начала и конца исходной строки. Но если пользователь не передает никаких символов в функцию, она удаляет только пробелы в начале и конце основной строки.

Просто быстрый вопрос:
Как вы очищаете экран в оболочке? Я видел такие способы:

Это просто открывает команду Windows, очищает экран и закрывает, но Я хочу очистить окно оболочки
(PS: я не знаю, помогает ли это, но я использую Python версии 3.3.2)
Спасибо :)

Для OS X вы можете использовать модуль подпроцесса и вызывать 'cls' из оболочки:

Чтобы предотвратить отображение «0» в верхней части окна, замените 2-ю строку на:

Для Linux вы должны заменить команду cls на clear

Как насчет ярлыка CTRL + L ?

Это работает для всех оболочек, например Python, Bash, MySQL, MATLAB и др.

Эта функция работает в любой ОС (Unix, Linux, macOS и Windows)
Python 2 и Python 3

В Windows команда cls , в Unix-подобных системах это команда clear .
platform.system() возвращает имя платформы. Ex . 'Darwin' для macOS.
subprocess.call() выполняет системный вызов. Ex . subprocess.call(['ls','-l'])

Используя windows 10 и python3.5 , я протестировал много кодов, и ничто не помогает мне больше, чем это:

Сначала определите простую функцию, эта функция будет печатать 50 новых строк (число 50 будет зависеть от того, сколько строк вы видите на экране, поэтому вы можете изменить это число)

Затем просто позвоните столько раз, сколько вы хотите или нужно

Я использую класс, который просто использует один из вышеуказанных методов за кулисами . Я заметил, что он работает в Windows и Linux . Мне нравится использовать его, хотя, потому что легче набирать clear () вместо system ('clear') ) или os.system ('очистить')

А затем, когда вы хотите очистить оболочку:

Вот несколько вариантов, которые вы можете использовать в Windows

Третий вариант, если вы находитесь в окне Python REPL:

Если вы используете терминал Linux для доступа к Python, то cntrl + l - лучшее решение для очистки экрана.

Вот как можно создать собственную команду cls или clear , которая будет работать без явного вызова какой-либо функции!

Мы воспользуемся тем, что консоль python вызывает repr() для отображения объектов на экране. Это особенно полезно, если у вас есть собственная настраиваемая оболочка python (например, с параметром -i ) и у вас есть сценарий предварительной загрузки для него. Это то, что вам нужно:

Используйте clear вместо cls , если вы используете Linux (как в команде os , так и в имени переменной)!

Теперь, если вы просто напишите cls или clear в консоли - это очистит! Даже не cls() или clear() - просто необработанная переменная. Это потому, что python вызовет repr(cls) , чтобы распечатать его, что, в свою очередь, вызовет нашу __repr__ функцию.

Давайте проверим это:

Чтобы уточнить - приведенный выше код должен быть импортирован в консоли, как это

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