Как удалить определённую строку из .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-сообщество
- Начало
- » 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")