Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
4 / 4 / 0
Регистрация: 28.08.2021
Сообщений: 173

Если строка пуста, то необходимо удалить её и сохранить текстовый документ. Как это сделать?

06.09.2021, 15:01. Показов 3038. Ответов 15

Студворк — интернет-сервис помощи студентам
Здравствуйте, необходимо удалить строку из текстового документа, если она пуста. Как это сделать? Помогите пожалуйста

Вот немного начал делать
Python
1
2
3
with open('3.txt', 'r') as f:
    text = f.read()
with open('3.txt', 'w') as f:
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.09.2021, 15:01
Ответы с готовыми решениями:

Необходимо открыть pdf документ из сети, есть только ссылка на файл, как это можно сделать
Салют! Столкнулась с проблемой: необходимо открыть pdf документ из сети, есть только ссылка на файл, как это можно сделать? Какую...

Как сохранить текст из combobox в текстовый документ
Как сохранить текст из combobox в текстовый документ

Удалить строку если опеределенная ячейка в ней пуста, если нет - оставить
Добрый день! Подскажите пожалуйста, как сделать: Есть лист excel, в котором находятся данные. Необходимо удалить все строки,...

15
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
06.09.2021, 15:17
Python
1
2
3
4
import re
 
with open('in.txt', 'r') as f_in, open('out.txt', 'w') as f_out:
    f_out.write(''.join([i for i in f_in.readlines() if not re.fullmatch(r'\s+', i)]))
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.09.2021, 15:23
Цитата Сообщение от funmanta Посмотреть сообщение
если она пуста.
Определение пустой строки должно быть сформулировано.

Python
1
2
3
4
5
6
7
8
9
10
>>> "" # однозначно пустая
''
>>> "\n" # пустая?
'\n'
>>> " " # пустая?
' '
>>>
>>> "                  \n" # пустая?
'                  \n'
>>>
Во всех случаях в строке нет никаких печатных символов, но степень ее пустоты - разная.
1
4 / 4 / 0
Регистрация: 28.08.2021
Сообщений: 173
06.09.2021, 16:02  [ТС]
Garry Galler, я имею ввиду
Цитата Сообщение от Garry Galler Посмотреть сообщение
>>> "" # однозначно пустая
Добавлено через 1 минуту
iSmokeJC, а можно изменить текущий тестовый файл без создания нового?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
06.09.2021, 16:03
Можно
1
4 / 4 / 0
Регистрация: 28.08.2021
Сообщений: 173
06.09.2021, 16:05  [ТС]
Garry Galler, в этой пустой строке нет пробелов
Миниатюры
Если строка пуста, то необходимо удалить её и сохранить текстовый документ. Как это сделать?  
0
4 / 4 / 0
Регистрация: 28.08.2021
Сообщений: 173
06.09.2021, 16:06  [ТС]
iSmokeJC, как?
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
06.09.2021, 16:10
Лучший ответ Сообщение было отмечено funmanta как решение

Решение

Цитата Сообщение от funmanta Посмотреть сообщение
как?
Ну ёмаё, подумать чуть-чуть!
Python
1
2
3
4
5
6
import re
 
with open('in.txt', 'r') as f:
    text = f.readlines()
with open('in.txt', 'w') as f:
    f.write(''.join([i for i in text if not re.fullmatch(r'\s+', i)
1
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.09.2021, 16:48
Цитата Сообщение от funmanta Посмотреть сообщение
в этой пустой строке нет пробелов
Зато есть символ перевода строки.

Добавлено через 1 минуту
Цитата Сообщение от funmanta Посмотреть сообщение
я имею ввиду
Таких строк в файле быть не может.
Там любая строка заканчивается символов перевода строки.
Кроме случая, если файл - абсолютно пустой.

Таким образом твоя пустая строка это строка содержащая единственный символ "\n" (поскольку Python нивелирует различия ОС, то будем считать что символ таки один).

Добавлено через 8 минут
Python
1
2
3
4
5
6
7
8
9
10
11
12
>>> line="""1
2
3
 
5"""
>>> open("test.txt","w").write(line)
8
>>> sum(1 for line in open("test.txt") if line=="\n")
1
>>> open("test.txt").readlines()
['1\n', '2\n', '3\n', '\n', '5']
>>>
Удалить (то есть записать без нее в новый файл):
Добавлено через 6 минут
Python
1
2
3
4
5
6
7
>>> open("test2.txt","w").writelines([line for line in open("test.txt") if line!="\n"])
>>> print(open("test2.txt").read())
1
2
3
5
>>>

Записать в тот же самый файл:
Python
1
2
3
4
5
6
7
8
>>> lines = [line for line in open("test.txt") if line!="\n"]
>>> open("test.txt","w").writelines(lines)
>>> print(open("test.txt").read())
1
2
3
5
>>
1
4 / 4 / 0
Регистрация: 28.08.2021
Сообщений: 173
06.09.2021, 16:51  [ТС]
iSmokeJC, Спасибо большое за помощь, я новичок в этом и не сразу всё схватываю
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
06.09.2021, 17:04
funmanta,
re.fullmatch(r'\s+', line) не отвечает твоему понимаю пустой строки.
Регулярное выражение \s+ это шаблон для строки, содержащей любое число пробельных символов: от 1 и более.
В пробельные символы входят: [ \f\n\r\t\v] - пробел, символ перевод страницы, символ перевода строки, каретка, табуляция (горизонт. и вертикальная).
0
4 / 4 / 0
Регистрация: 28.08.2021
Сообщений: 173
07.09.2021, 11:02  [ТС]
Garry Galler,
Цитата Сообщение от Garry Galler Посмотреть сообщение
re.fullmatch(r'\s+', line) не отвечает твоему понимаю пустой строки.
это решение вполне удовлетворяет меня.
Спасибо вам, что потратили своё время на решение задачи
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
07.09.2021, 13:44
Цитата Сообщение от funmanta Посмотреть сообщение
это решение вполне удовлетворяет меня.
Но ты его не понимаешь и только поэтому оно тебе удовлетворяет.
Это очень плохой способ мышления.
0
4 / 4 / 0
Регистрация: 28.08.2021
Сообщений: 173
07.09.2021, 16:21  [ТС]
Garry Galler, тогда как вы предложите усовершенствовать код?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
07.09.2021, 17:00
Цитата Сообщение от funmanta Посмотреть сообщение
тогда как вы предложите усовершенствовать код?
Я предложил (еще в самом начале) сформулировать понятие "пустой строки" для данной задачи.
Если мы не формулируем (хотя бы для себя) какую именно задачу мы решаем, мы решаем неизвестно что.
Ты написал что пустая строка для тебя это "".
Однако выражение \s+ как раз не матчит такую строку. Она матчит любые пробельные последовательности символов из набора [ \f\n\r\t\v].
В том числе, разумеется и newline (\n), но не только, как видишь. Если твоя задача их включает, тогда у меня нет никаких возражений.
Я тебе также написал, что в файле пустая строка это как правило строка содержащая единственный символ "\n". Либо, если файл совсем пустой, то его содержимое будет равно той самой однозначно пустой "".

(Я немного ошибся с утверждением что строк без newline в файле совсем не бывает. Если строка единственная или последняя, то символа перевода на новую строку может и не быть).
0
4 / 4 / 0
Регистрация: 28.08.2021
Сообщений: 173
08.09.2021, 08:08  [ТС]
Garry Galler, для меня строка является пустой когда нет букв, цифр и символов, но есть пробелы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.09.2021, 08:08
Помогаю со студенческими работами здесь

Как сделать чтобы div пропадал если ссылка в нем пуста
Здравствуйте! У меня есть div, в котором хранится ссылка, и мне нужно, чтобы если href="" пустой, то div бы не было видно. Как...

Текстовый редактор: как сохранить (не "сохранить как") открытый документ
private void сохранитькакToolStripMenuItem_Click(object sender, EventArgs e) { if (saveFileDialog1.ShowDialog() == ...

Как уничтожать динамические объекты и вообще объекты, если это необходимо сделать в их процедурах?
Создать отдельную процедуру CloseObject(Object: TObject) и вызывать ее в конце процедуры или так тоже нельзя? А то бесят эти access...

Необходимо из чисел сделать строку. Есть матрицы S и C - это буквы, нужно сохранить их в файл в виде букв

Дан текстовый файл. Преобразовать строки файла по правилу: если строка содержит буквы, то удалить их
При вводе любых символов вылезает ошибка, как на скрине. Помогите исправить. #include <iostream> #include <fstream> ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru