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

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

  • автор:

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

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

Отслеживать
15.5k 3 3 золотых знака 18 18 серебряных знаков 30 30 бронзовых знаков
задан 5 фев 2019 в 9:33
vaytonqueen vaytonqueen
81 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() 

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

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

cat file.txt # foobar # # fizzbazz # helloworld! # # python # # hexlet # with open('file.txt') as f: lines = f.readlines() non_empty_lines = (line for line in lines if not line.isspace()) with open('new_file.txt', 'w') as n_f: n_f.writelines(non_empty_lines) cat new_file.txt # foobar # fizzbazz # helloworld! # python # hexlet 

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

Есть вот такой код и нужна помощь в блоке else, а конкретно, это мой печальный вариант проверки является ли число вещественным. Вроде как срабатывает, но в файле строка с вещественным числом не становится пустой.

Лучшие ответы ( 2 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Использовать строку из файла и удалить
Помогите with open("3.txt", "r") as f: VIDEO_ID = f.read() print(VIDEO_ID) Нужно чтобы.

Удалить из файла строку с номером K
Дано целое число K и текстовый файл. Удалить из файла строку с номером K. Если строки с таким.

Удалить из текстового файла третью строку. Результат записать в другой файл
Имеется текстовый файл. Удалить из него третью строку. Результат записать в другой файл.

Удалить из файла первую строку, в конце которой стоит вопросительный знак. Результат записать в другой файл
Имеется текстовый файл. Удалить из него первую строку, в конце которой стоит вопросительный знак.

814 / 526 / 214
Регистрация: 22.12.2017
Сообщений: 1,495

Лучший ответ

Сообщение было отмечено qli как решение

Решение

1 2 3 4 5 6 7 8 9 10 11 12
count = 0 with open('input(indv).txt','r+') as file: for s in file.readlines(): print(s) if '-' in s: count += 1 else: if float(s)  1 and float(s) > 0: s = '\n' file.write(s) print('Count of negative number equal: ', count)

Добавлено через 2 минуты
но эта проверка не проверяет на вещественность, она просто проверит что число в пределах (0,1) и вещественное, в своей программе можете просто заменить file на file.readlines(), и ещё — не используйте имя string, оно зарезервировано и является названием популярной библиотеки string

Добавлено через 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 не будет опубликован. Обязательные поля помечены *