Как удалить строку из файла python
Перейти к содержимому

Как удалить строку из файла python

  • автор:

Как удалить только одну строку в CSV с помощью Python?

В этом уроке мы научимся удалять только одну строку в CSV с помощью Python. Мы будем использовать библиотеку Pandas. Pandas — библиотека с открытым исходным кодом для анализа данных; это одна из самых популярных библиотек Python для исследования данных и аналитической информации. Он включает в себя несколько функций для выполнения операций с наборами данных. Его можно комбинировать с другими библиотеками, такими как NumPy, для выполнения определенных функций с данными.

Мы будем использовать метод drop() для удаления строки из любого файла csv. В этом уроке мы проиллюстрируем три примера удаления строки из файла csv, используя тот же метод. К концу этого руководства вы познакомитесь с этой концепцией и сможете удалить строку из любого файла CSV.

Синтаксис

Это синтаксис для удаления нескольких строк из массива.

#drop method data = pd.read_csv("my file") data = data.drop(data.index[index_number]) print(data) 

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

Пример 1. Удаление последней строки из файла CsV

Вот пример, в котором мы удалили последнюю строку с помощью метода drop. Сначала мы читаем файл CSV как фрейм данных с помощью read_csv(), затем используем метод drop() для удаления строки с индексом -1. Затем мы указали индекс для удаления, используя параметр index. Наконец, мы записываем обновленный DataFrame обратно в файл CSV, используя to_csv(), устанавливая index=False, чтобы избежать записи индексов строк в файл.

import pandas as pd df = pd.read_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv') df = df.drop(df.index[-1]) df.to_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv', index=False) 

Выход

CSV-файл перед запуском кода

CSV-файл после запуска кода —

Пример 2. Удаление строки по метке

Вот пример, аналогичный приведенному выше; в этом примере мы удаляем строку с меткой «строка». В этом примере мы читаем CSV-файл с помощью read_csv(), но на этот раз мы устанавливаем столбец «id» в качестве индекса, используя параметр index_m. Затем мы используем метод drop() для удаления строки с индексной меткой «строка». Затем мы указали метку, которую нужно удалить, используя параметр index. Наконец, мы записываем обновленный DataFrame обратно в файл CSV с помощью to_csv(), не устанавливая index=False, поскольку метки строк теперь являются частью файла CSV.

import pandas as pd df = pd.read_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv', index_col='id') df = df.drop('row1') df.to_csv('How_to_delete_only_one_row_in_CSV_with_Python.csv', index=True) 

Выход

CSV-файл перед запуском кода —

CSV-файл после запуска кода —

Пример 3. Удаление строки с условием

В этом примере сначала мы читаем CSV-файл, затем используем метод drop(), чтобы удалить строку, в которой значение в столбце «Имя» равно «Джон». Мы делаем это, сначала используя логическое индексирование, чтобы выбрать строки, соответствующие условию. Наконец, мы записываем обновленный DataFrame обратно в файл CSV, используя to_csv(), снова устанавливая index=False.

import pandas as pd df = pd.read_csv('example_3.csv') df = df.drop(df[df.Name == 'Ankita'].index) df.to_csv('example_3.csv', index=False) 

Выход

CSV-файл перед запуском кода —

CSV-файл после запуска кода —

Заключение

Мы узнали, что pandas — это мощная и гибкая библиотека Python для манипулирования и анализа данных. Он обеспечивает высокопроизводительные структуры данных. Мы проиллюстрировали метод удаления для удаления строки из файла csv. В зависимости от потребностей мы можем указать строки для удаления по индексу, метке или условию. Этот метод позволяет удалить одну или несколько строк из файла csv.

Все права защищены. © Linux-Console.net • 2019-2024

Форум русскоязычного сообщества Ubuntu

Страница сгенерирована за 0.037 секунд. Запросов: 25.

  • Сайт
  • Об Ubuntu
  • Скачать Ubuntu
  • Семейство Ubuntu
  • Новости
  • Форум
  • Помощь
  • Правила
  • Документация
  • Пользовательская документация
  • Официальная документация
  • Семейство Ubuntu
  • Материалы для загрузки
  • Совместимость с оборудованием
  • RSS лента
  • Сообщество
  • Наши проекты
  • Местные сообщества
  • Перевод Ubuntu
  • Тестирование
  • RSS лента

© 2012 Ubuntu-ru — Русскоязычное сообщество Ubuntu Linux.
© 2012 Canonical Ltd. Ubuntu и Canonical являются зарегистрированными торговыми знаками Canonical Ltd.

Как удалить определённую строку из .txt файла

Я хочу найти в файле users.txt определённую строку (например, СОДЕРЖАЩУЮ «Привет» ), и удалить эту строку. Я облазил всё — ничего не нашел с моим случаем. И да — покажите легко, не нужно делать огромные непонятные коды. Задача проста — найти и удалить определённую строку из .txt файла

Отслеживать
16.9k 4 4 золотых знака 21 21 серебряный знак 31 31 бронзовый знак
задан 5 фев 2019 в 9:33
vaytonqueen vaytonqueen
91 1 1 золотой знак 1 1 серебряный знак 9 9 бронзовых знаков
Оффтоп: Даже если задача звучит просто, это не значит, что она проста в реализации.
5 фев 2019 в 9:37

А что может быть сложного в ПРОСТОМ УДАЛЕНИИ строки? Я понимаю, сам не умею т.к. начинающий. Но логично же — просто удалить строку.

5 фев 2019 в 9:39

И что по вашему код должен сделать после line.clear()? Допустим, он очистит место на диске, которое занимает эта строчка. Но файл по прежнему будет иметь ту же длину, только теперь с последовательностью нулевых байт в середине, там, где была строка! По любому нужно как минимум сместить все строки, которые идут после удалённой.

5 фев 2019 в 10:05

Нет такого понятия — удаление из файла (как устройства последовательного доступа). Либо считать всё в список, удалить ненужное, записать список в тот же файл, либо читать построчно, как вы уже умеете, записывая в выходной файл только хорошие строки, потом удалить старый файл, переименовать новый.

5 фев 2019 в 10:07

@Vayton, если вы в текстовом редакторе удалите одну строчку из текстового файла в котором 1.000.000 строк, то текстовый редактор пересоздаст файл и запишет в него 999.999 строк.

5 фев 2019 в 11:07

3 ответа 3

Сортировка: Сброс на вариант по умолчанию

Открываем файл для чтения.
Сохраняем все строки в массив lines

Открываем файл для записи.
Проходим по массиву строк и сравниваем с искомой строкой.
Если строка не найдена — записываем строку в файл.

UPD. С учетом предложений @MaxU

#!/usr/bin/env python3 import re with open('f.txt') as f: lines = f.readlines() str = 'Hello' pattern = re.compile(re.escape(str)) with open('f.txt', 'w') as f: for line in lines: result = pattern.search(line) if result is None: f.write(line) 

Или почти тоже самое, но в один проход (но я за первый вариант)

#!/usr/bin/env python3 import re str = 'Hello' pattern = re.compile(re.escape(str)) with open('f.txt', 'r+') as f: lines = f.readlines() f.seek(0) for line in lines: result = pattern.search(line) if result is None: f.write(line) f.truncate() 

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

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

3211Marlon1123
Участник

Автор темы
Версия MoonLoader .027.0-preview
Как это сделать? Допустим, мне нужно удалить последнюю строчку
Последнее редактирование: 2 Апр 2022

chapo
function removeLines(file, linesToRemove) if doesFileExist(file) then local lines = <> for line in io.lines(file) do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end local handle = io.open(file, 'w') handle:write(table.concat(result, '\n')) handle:close() end end
sampRegisterChatCommand('remove', function(). 
chapo
�� В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ

Друг

8,723 11,110

function removeLines(file, linesToRemove) if doesFileExist(file) then local lines = <> for line in io.lines(file) do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end local handle = io.open(file, 'w') handle:write(table.concat(result, '\n')) handle:close() end end
sampRegisterChatCommand('remove', function() removeLines(getWorkingDirectory()..'\\FILEBEBRA.txt', ) -- 1, 5 - строки которые будут удалены end)

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

function getLastLineIndex(file) local lines = <> for line in io.lines(file) do table.insert(lines, line) end return #lines end -- удалить последнюю: removeLines(файл, )
3211Marlon1123
Участник

Автор темы

function removeLines(file, linesToRemove) if doesFileExist(file) then local lines = <> for line in io.lines(file) do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end local handle = io.open(file, 'w') handle:write(table.concat(result, '\n')) handle:close() end end
sampRegisterChatCommand('remove', function() removeLines(getWorkingDirectory()..'\\FILEBEBRA.txt', ) -- 1, 5 - строки которые будут удалены end)

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

function getLastLineIndex(file) local lines = <> for line in io.lines(file) do table.insert(lines, line) end return #lines end -- удалить последнюю: removeLines(файл, )

Спасибо, что отозвался. Сейчас проверю и отвечу)

function removeLines(file, linesToRemove) if doesFileExist(file) then local lines = <> for line in io.lines(file) do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end local handle = io.open(file, 'w') handle:write(table.concat(result, '\n')) handle:close() end end
sampRegisterChatCommand('remove', function() removeLines(getWorkingDirectory()..'\\FILEBEBRA.txt', ) -- 1, 5 - строки которые будут удалены end)

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

function getLastLineIndex(file) local lines = <> for line in io.lines(file) do table.insert(lines, line) end return #lines end -- удалить последнюю: removeLines(файл, )

Не робит( Проверку на файл убрал, ибо она уже есть

fileDirectory = 'путь к файлу и бла бла бла' f = io.open(fileDirectory, 'r+') function removeLines(linesToRemove) local lines = <> for line in f:lines() do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end f:write(table.concat(result, '\n')) f:flush() f:close() end function getLastLineIndex() local lines = <> for line in f:lines() do table.insert(lines, line) end return #lines end

Последнее редактирование: 3 Апр 2022

chapo
�� В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ

Друг

8,723 11,110

Спасибо, что отозвался. Сейчас проверю и отвечу)

Не робит( Проверку на файл убрал, ибо она уже есть

fileDirectory = 'путь к файлу и бла бла бла' f = io.open(fileDirectory, 'r+') function removeLines(linesToRemove) local lines = <> for line in f:lines() do table.insert(lines, line) end for k, v in ipairs(linesToRemove) do if lines[v] ~= nil then lines[v] = '**removedline**' -- через nil нихуя не работало, через table.remove удаляло не ту строку end end local result = <> for k, v in ipairs(lines) do if v ~= '**removedline**' then table.insert(result, v) end end f:write(table.concat(result, '\n')) f:flush() f:close() end function getLastLineIndex() local lines = <> for line in f:lines() do table.insert(lines, line) end return #lines end

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *