Перейти к содержимому

Как удалить строку из файла 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

Удалить строку из txt файла если не нашлось совпадения

Есть много_txt_файлов и еще один с данными. Нужно удалить из файла с данными строку если в много_txt_файлов не нашлось совпадения.

в файле с данными 4000 строк, одно значение в строке, много_txt_файлов 1900 штук, три значения в строке

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

знаю что бесплатно никто не работает) оставите координаты отправлю немного на чтосамирешите)

xohox
02.10.21 18:05:58 MSK

Зачем тебе grep и прочие Shell-костыли для этого? Возьми какой-нибудь нормальный ЯП, например, Python и сделай всё с его помощью.

EXL ★★★★★
( 02.10.21 18:08:28 MSK )

Нужно удалить из файла с данными строку если в много_txt_файлов не нашлось совпадения.

Может наоборот? Добавлять в новый файл строку если grep пустой?

anonymous
( 02.10.21 18:13:24 MSK )

Цикл, awk и [ в помощь.

anonymous
( 02.10.21 18:17:09 MSK )

#!/usr/bin/bash data_file="$1" many_files_dir="$2" tmp_file=$(mktemp) cat "$data_file" | while read line; do if grep -Fqr "$line" "$many_files_dir"; then echo "$line" >> "$tmp_file" fi done mv "$tmp_file" "$data_file" 

Я не проверял, конечно. И это, по идее, должно работать, только если строки идеально совпадают. Если надо прям значения сравнивать, без учёта пробелов, то такой вариант не подойдёт.

anonymous
( 02.10.21 18:25:02 MSK )
Ответ на: комментарий от anonymous 02.10.21 18:25:02 MSK

Может быть ещё -x стоит добавить к аргументам grep.

anonymous
( 02.10.21 18:30:46 MSK )

Можно решать задачу по другому.

Читаешь файл построчно и ищешь совпадения в файлах, если нашлось заносить строку в другой новый файл ( в один и тот же).

В конце получаешь новый файл в котором только строки что нашлись.

anonymous
( 02.10.21 20:48:39 MSK )

… знаю что бесплатно никто не работает)

Почему же?
Многим помогают, кто приводит код и говорит о проблемах.
А те кто просто просят СДЕЛАЙТЕ МНЕ, тех в job /жопу по просто народному/ отсылают …

anonymous
( 02.10.21 20:57:08 MSK )
Ответ на: комментарий от anonymous 02.10.21 18:25:02 MSK

Что-то не взлетает, записывает в новый файл значения из data_file, на этом всё. Строки конечно же не совпадают.

строки в файлах в many_files_dir

76.9.16.1:3510 47.16.38.12:55194 ESTABLISHED 76.9.16.1:35356 19.197.55.71:51152 SYN_SENT

строки в data_file

по моей задумке в новый файл должен попасть только 47.16.38.12

сможешь что-то с этим сделать?

xohox
( 02.10.21 20:59:17 MSK ) автор топика
Ответ на: комментарий от anonymous 02.10.21 20:57:08 MSK

Можно в job попросить модератора перенести, но я ж вроде написал, что готов материально отблагодарить.

Могу и сам сидеть ковыряться, но, как всегда, нужно сейчас. Поэтому и обратился.

xohox
( 02.10.21 21:02:09 MSK ) автор топика
Ответ на: комментарий от xohox 02.10.21 21:02:09 MSK

Могу и сам сидеть ковыряться, но, как всегда, нужно сейчас.

Вы анализируете лог файл.
Что вы хотите найти в нем?

anonymous
( 02.10.21 21:04:23 MSK )

touch result.txt for w in `cat data.txt` do if [ -z `grep -r $w ./filesdir/` ] then echo $w >> results.txt fi done mv results.txt data.txt 

AKonia ★★
( 02.10.21 21:08:46 MSK )
Ответ на: комментарий от xohox 02.10.21 20:59:17 MSK

Ну, по логике всё должно быть как ты хочешь. Может быть у тебя файл с данными в той же папке лежит, что и txt-файлы?

anonymous
( 02.10.21 21:22:49 MSK )
Ответ на: комментарий от xohox 02.10.21 20:59:17 MSK

Проверил на вот этих твоих данных сейчас. Структура файлов такая:

./script.sh ./data.txt ./txt/f.txt 
$ cat data.txt 47.16.38.12 1.1.9.5 $ cat txt/f.txt 76.9.16.1:3510 47.16.38.12:55194 ESTABLISHED 76.9.16.1:35356 19.197.55.71:51152 SYN_SENT 
$ ./script.sh data.txt txt $ cat data.txt 47.16.38.12 

То есть пропала запись 1.1.9.5 . Так ведь надо было?

anonymous
( 02.10.21 21:32:28 MSK )

grep -v 'pattern' file > newfile 

anonymous
( 02.10.21 21:49:47 MSK )
Ответ на: комментарий от AKonia 02.10.21 21:08:46 MSK

Хочу оставить в data файле только ip с которых подключаются и удалить те, с которых подключения прекратились.

Ругается вот так

./start ./start: line 6: [: too many arguments ./start: line 6: [: too many arguments ./start: line 6: [: too many arguments

шестая строка if [ -z grep -r $w /root/test/ ]

выдает три строки с ошибками, но в data файле четыре строки

cat data 185.155.99.55 37.70.201.228 94.130.57.235 1.1.9.5

xohox
( 02.10.21 22:08:00 MSK ) автор топика
Ответ на: комментарий от anonymous 02.10.21 21:32:28 MSK

мой косяк, все работает)

xohox
( 02.10.21 22:13:23 MSK ) автор топика
Ответ на: комментарий от anonymous 02.10.21 21:32:28 MSK

напиши, пожалуйста, куда удобно будет отправить оплату

xohox
( 02.10.21 22:14:24 MSK ) автор топика
Ответ на: комментарий от xohox 02.10.21 22:14:24 MSK

Да ничего не надо. Купи жене или маме цветы 🙂

anonymous
( 02.10.21 23:11:45 MSK )
Ответ на: комментарий от anonymous 02.10.21 23:11:45 MSK

может на телефон отправить? напиши номер в личку, а то ты время тратишь, а пользуюсь я, неправильно это

результат теста, мало ли интересно, из 4000 строк осталось 130) огонь)

xohox
( 03.10.21 00:38:59 MSK ) автор топика
Ответ на: комментарий от xohox 03.10.21 00:38:59 MSK

Для меня это было несложно. Потратил я минут 5 на то, что мне в было интересно, что в этом неправильного? Но спасибо, что проявляешь ответственность 🙂

Тот твой огонь из моего окна не видно, к сожалению. А не думал завести БД под свои файлы? Возможно с языком запросов все твои задачи решались бы проще. Или, как тут правильно советуют, попробуй анализатор логов какой-нибудь, там уже должны быть решены все типовые задачи. Какой именно — я тебе не смогу посоветовать, так как сам ими не пользуюсь.

anonymous
( 03.10.21 01:17:10 MSK )
Ответ на: комментарий от anonymous 03.10.21 01:17:10 MSK

Тут какая штука, этот data файл собирался более года. Теперь я его почищу и это снова на год хватит. Анализатор/парсер у меня есть, это perl скрипт, 100 000 строк за одну секунду обрабатывает. Я вот только не знал как убрать уже не используемые.

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

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

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

  • Вопрос задан более трёх лет назад
  • 42523 просмотра

Комментировать

Решения вопроса 2

Системный администратор

Ответ написан более трёх лет назад

Нравится 3 1 комментарий

Николай Сидоренко @NSidorov Автор вопроса

То, что нужно спасибо!

Avernial

Разрабатываю научное ПО на языке Python.

Можно попробовать использовать: subprocess.call(«sed -i ‘pattern’ file_name», shell=True).
Например для удаление из файла, содержащего числа в каждой строке, чтобы удалить строку с номер два, можно выполнить команду: subprocess.call(«sed -i ‘/2/d’ numbers.txt», shell=True).

Ответ написан более трёх лет назад

Нравится 1 2 комментария

Python-сообщество

[RSS Feed]

  • Начало
  • » Python для новичков
  • » Удалить строку из файла

#1 Ноя. 21, 2013 13:42:03

SmalllSMK Зарегистрирован: 2013-11-21 Сообщения: 2 Репутация: 0 Профиль Отправить e-mail

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

Доброе время суток.

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

goods = open('goods.txt') report = open('report.txt') total = open('total.txt', 'a') counter = 0 for every_symbol in goods: every_symbol = every_symbol.split("|") data = [every_symbol[0].strip(), every_symbol[1].strip(), every_symbol[2].strip(), every_symbol[3].strip()] total.write(str(data) + "\n") 

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

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