Python удалить пустые строки из файла
Как удалить пустые строки в текстовом файле python?
В моем сценарии python я пишу конкретные столбцы из текстового файла в новый_текст_файл, разделенный , потому что new_text_file позже станет csv_file. В файле new_text_file остались белые пробелы, потому что строки, которые я пропустил, записывали, что нужно удалить из файла.
Я не могу использовать .strip() или .rstrip() потому что получаю ошибку: AttributeError: ‘_io.TextIOWrapper’ object has no attribute ‘strip’ .
Я не могу использовать ip_file.write("".join(line for line in ip_file if not line.isspace())) потому что я получаю ошибку: UnsupportedOperation: not readable .
Я также попытался импортировать sys и re , и попробовал каждый другой ответ, найденный на этом сайте, но он все равно возвращает ошибки.
Результат ip_file выглядит так:
Я кодировал под последней строкой вышеприведенного скрипта в циклах. new_text_file — это ip_file в моем скрипте, и все должно быть в Python.
Вопрос: Есть ли другой способ удалить пустые строки в ip_file ? ИЛИ предотвратить их когда-либо писать?
Python | Удалить пустые строки из списка строк
Во многих случаях мы сталкиваемся с проблемой получения пустой строки в огромном количестве данных и обработки, которая иногда становится утомительной задачей. Давайте обсудим некоторые способы удаления пустых строк из списка строк.
Способ № 1: Использование remove ()
Этот конкретный метод довольно наивен и его не рекомендуется использовать, но он действительно является методом для выполнения этой задачи. remove() правило, remove() удаляет первое вхождение пустой строки, и мы продолжаем повторять этот процесс, пока в списке не будет найдена пустая строка.
test_list = [" ", " GeeksforGeeks ", " ", " is ", " best ", " "]
print ( "Original list is : " + str (test_list))
while ("" in test_list) :
print ( "Modified list is : " + str (test_list))
Метод № 2: Использование списка понимания
Более лаконичный и лучший подход для удаления всех пустых строк, он просто проверяет, является ли строка не пустой, и заново создает список со всеми не пустыми строками.
test_list = [" ", " GeeksforGeeks ", " ", " is ", " best ", " "]
print ( "Original list is : " + str (test_list))
test_list = [i for i in test_list if i]
print ( "Modified list is : " + str (test_list))
Способ № 3: Использование join() + split()
Объединяя обе операции join() и split() , эта задача также может быть достигнута. Сначала мы объединяем все строки, чтобы удалить пустое пространство, а затем разделяем их на список, чтобы в новом списке не было пустой строки.
test_list = [" ", " GeeksforGeeks ", " ", " is ", " best ", " "]
print ( "Original list is : " + str (test_list))
print ( "Modified list is : " + str (test_list))
Как удалить пустые строки с или без пробелов в Python
У меня есть большая строка, которую я разделил на новые строки. Как я могу удалить все пустые строки (только пробелы)?
Использование регулярного выражения:
Я также пробовал использовать регулярные выражения и списочные решения, и первый список быстрее .
Вот мое решение (по предыдущим ответам):
Вы можете просто использовать rstrip:
В редакторе komodo нажмите Ctrl + H «Звездная метка» (рассматривается как регулярное выражение), щелкните ссылку выше, чтобы просмотреть снимок.
Попробуйте понять список и string.strip() :
Удивленный многострочный re.sub не был предложен (О, потому что вы уже разбили свою строку . Но почему?):
Редактировать: Вау, я думаю, что опускать очевидное не хорошо.
Мой оригинальный текст: Эми Понд была похищена, и Доктор собирает армию, чтобы спасти ее, поскольку драма продолжается. Но когда он и Рори мчатся по галактикам, зовут долгов и держат торжественные обещания, его враги кладут тщательно скрытую ловушку.
В своей камере в клетке Шторма Ривер Сонг с грустью признает, что время наконец настало — сегодня состоится Битва Демонов и самый темный час Доктора. Обе стороны будут приносить свои жертвы, и Речная Песня должна наконец раскрыть свой самый тщательно охраняемый секрет.
Я удалил пустую строку и объединил все вместе в одну строку с этим решением:
Удалить пустые строки по значение + удалить строки если определенные строки ниже содержат пустые ячейки
Добрый день, есть страница в excel (прикрепил файл с примером, в оригинале 520 строк) она.
Удалить пустые строки из файла
Надо именно удалить (а не пропустить или не перенести текст в новый файл без пустых строк) пустые.
Удалить из файла пустые строки
Подскажите пожалуйста как в файле пустые строки удалить: 00259C6D1176 Device name.
Я его открыть не могу, посмотрел LTFViewer5u - там все в порядке
Написал, что если строка равна нулю в исходном файле - то берем следующую строку, эту не пишем.
Все равно.
Так же эта функция делает то же самое, что за фигня.
Написал, что если строка равна нулю в исходном файле - то берем следующую строку, эту не пишем.
Все равно.
Так же эта функция делает то же самое, что за фигня.
ничего не понял.
1) Если попытаться записывать только не пустые строки тоже падает ошибка?
2) если говоришь открывал файл -там реально есть пустые строки? или там строки вида ". "?
Нет ошибка не падает
Просто пишет в выходной файл типа:
1.Строка blalbalblabsghv
2.Строка
3.Строка blalbalblabrweqr
4.Строка
5.Строка blalbalblabrr
6.Строка
7.Строка blalbalblab34
8.Строка
9.Строка blalbalblab34
Там тула для просмотра больших файлов мне показывает, что все четенько, что все идет ряд к ряду. На самом деле, может эта тула таким образом так показывает, хз.
antoniogrid, стой, тогда откуда мысль что там реально есть пустые строки?
сколько у тебя оперативной памяти?
Добавлено через 2 минуты
Промежутки появляются, когда я запускаю
перефразирую -сколько оперативки есть при запуске твоей проги? может там реально всего полтора гига есть свободных?
файл из
файл в
Вот такая хрень от скрипта. Что я сделал не так. Понять не могу.
После того, как я получил файл в
Я хочу удалить пустые строки.
Но может, на старте их не нужно допускать?
Я не понял - проблема с памятью или пустыми строками?
ПО пустым строкам решается так:
По newline='' написано в документации.
Тоже самое и с записью.
If newline='' is not specified, newlines embedded inside quoted fields will not be interpreted correctly, and on platforms that use \r\n linendings on write an extra \r will be added. It should always be safe to specify newline='', since the csv module does its own (universal) newline handling.
Ну, смотрите, если я сохранил большой файл - может ругаться на память. И ничего не сделать.
Если поменьше, строчек 1000 - 10000 - тогда скрипт проходит - но ничего не меняется.
Добавлено через 4 минуты
Для чтения большого файла есть специальные параметры в read_csv:
iterator bool, default False
Return TextFileReader object for iteration or getting chunks with get_chunk().
Changed in version 1.2: TextFileReader is a context manager.
chunksize int, optional
Return TextFileReader object for iteration. See the IO Tools docs for more information on iterator and chunksize.
Не знаю. та же тема
Ну читать же надо что люди пишут.
Ты прочитал без лишних newlines, а при записи - добавил их. Молодца.
В твоем csv нет никаких пустых строк. Следовательно, какой смысл вообще переливать из пустого одного файла в другой файл порожнее.?
возьмет только первые 100 строк, например?
По остальным замечаниям разобрался. но, полез в документацию, там про newline как-то применительно к open ничего не нашел. А где ты смотришь?
Удалить пустые строки из файла
вот задача: Пусть дан текстовый файл f1. Перепишите его содержимое в файл f2, сохраняя строчную.
Удалить пустые строки из файла
Помогите убрать пустые строки на выходе ! Что-то не получается . using System; using.
Удалить все пустые строки из файла
Помогите пожалуйста написать функцию на Visual C++ : удалить все пропущенные (пустые) строки.
Удалить из файла все пустые строки
Компонентой типизированного файла является строка с объявленной длиной 80 символов. В частном.
Удалить из файла все пустые строки
Дан текстовый файл. Удалить из него все пустые строки. Вот мой вариант решения: program Project2;.
Удалить из файла все пустые строки
Из текстового файла удалить все пустые строки. Пустой считать строку, не содержащую символов или.
00259C6D1176 Device name: kolvaKust1oper
0000541844DD Device name: kolvaKust1oper
0090E825628D Device name: kolvaKust1oper
0090E82467B5 Device name: kolvaKust1oper
00043500AD03 Device name: kolvaKust1oper
00207517E8FC Device name: kolvaKust1oper
BCAEC5DBF940 Device name: kolvaKust1oper
00908F2710F9 Device name: Kolva_drilling_kust2
20CF309C3D7E Device name: Kolva_drilling_kust2
00C0EE89A9F6 Device name: Kolva_drilling_kust2
00043500AD0C Device name: Kolva_drilling_kust2
0021155F4854 Device name: KolvaGPS
00043500BBFE Device name: KolvaGPS
14DAE995DF63 Device name: KolvaGPS
1CEB1C321BEF Device name: KolvaGPS
E0699509220E Device name: KolvaGPS
6CF049DE222C Device name: KolvaGPS
00158F0993AA Device name: KolvaGPS
00C0EE899526 Device name: KolvaGPS
00838D47960F Device name: KolvaGPS
00C0EE89AAB8 Device name: KolvaGPS
00043500ACFF Device name: KolvaGPS
04213C8AB273 Device name: KolvaGPS
1C6F6558B6E9 Device name: KolvaGPS
1C6F6558BB4B Device name: KolvaGPS
Удалить строки из файла
Всем доброго времени суток. Как удалить первые n строк из текстового файла? Если можно кусок кода.
Удалить из файла строки
Нужно оставить в текстовом файле последние пять строк. Проще всего считывать весь файл, выделять.
Как из списка удалить пустые списки?
например есть такое ls = , , , , , , , , , ,] как удалить пустые ? например так for i,d in.
Удалить пустые строки из файла
вот задача: Пусть дан текстовый файл f1. Перепишите его содержимое в файл f2, сохраняя строчную.
Решение
Спасибо! Работает Правда в моем случае не понадобилось, проблема была в другом.
Но я думаю в будущем пригодится
Удалить пустые строки из файла
Помогите убрать пустые строки на выходе ! Что-то не получается . using System; using.
Удалить пустые строки из файла
Надо именно удалить (а не пропустить или не перенести текст в новый файл без пустых строк) пустые.
Удалить из файла все пустые строки
Дан текстовый файл. Удалить из него все пустые строки.
Удалить все пустые строки из файла
Помогите пожалуйста написать функцию на Visual C++ : удалить все пропущенные (пустые) строки.
Есть некий файл, состоящий из строк. Нужно удалить выборочно строки, начинающиеся с определенного набора символов при помощи python. Как это сделать?
нужно удалить все, что начинается с ANISOU
У вас есть идеи и предложения того, как это сделать не лучше, а хоть как-нибудь? Какие-то конкретные проблемы?
Приношу свои извинения за то, что незаслуженно закрыл этот вопрос 04.03.2017. Надеюсь, больше не повторю таких ошибок.
2 ответа 2
Как удалить каждую вторую строку из файла на python?
Используя fileinput , чтобы прозрачно создать временный файл, чтобы по месту изменения выполнить:
Этот for-цикл можно также записать, используя itertools.islice :
Если реализация .writelines() не пишет строки по мере поступления, а загружает их всех в память, то можно использовать явный for-цикл, чтобы по одной строке писать, не загружая весь файл в память.
Для небольшого файла полный код может использовать .readlines() , чтобы получить список строк (загрузить файл в память) и целиком перезаписать этот файл, рискуя потерять данные если ошибка возникнет:
Для небольшого файла, заданного с командной строки или стандартного ввода (stdin), пренебрегая возможными ошибками, можно кратко записать:
это полный скрипт. Использование:
В более общем случае, чтобы удалить строки по месту из файла, не создавая временный файл и не загружая всё содержимое в память, seek()/tell() работают, но вероятно менее эффективное решение создают:
Этот более сложный вариант работает и для файлов, которые как в оперативную память не помещаются так и для которых нет места, чтобы копию на диске создать.
нужно удалить все, что начинается с ANISOU
Можно адаптировать приведённые выше примеры кода:
Можно самостоятельно временный файл создать (к примеру, если в текущей директории не достаточно места для копии файла, можно явно другую директорию указать (на другом диске) и использовать shutil.move() , если необходимо):
Загрузив строки в память:
Легко адаптировать к другим условиям, определив keep_line() предикат, к примеру:
У меня есть большой CSV-файл, в котором некоторые строки полностью пустые. Как я могу использовать Python, чтобы удалить все пустые строки из CSV?
После всех ваших предложений, это то, что я до сих пор
Это нормально или есть лучший способ сделать это?
Используйте модуль csv :
Если вам также необходимо удалить строки, в которых все поля пусты, измените строку if row: на:
И если вы также хотите обрабатывать поля, состоящие только из пробелов, как пустые, вы можете заменить их на:
Обратите внимание, что в Python 2.x и более ранних версиях модуль csv ожидал двоичные файлы, и поэтому вам нужно открыть ваши файлы с флагом e 'b' . В 3.x это будет привести к ошибке.
Мне нужно сделать это, но у меня нет пустой строки, написанной в конце CSV-файла, как, к сожалению, делает этот код (что также делает Excel, если вы сохраняете-> .csv). Мой (даже более простой) код, использующий модуль CSV, тоже делает это:
M51_csv_proc.csv имеет ровно 125 строк; программа всегда выводит 126 строк, последняя из которых пустая.
Я прошел через все эти темы, кажется, ничто не изменит этого поведения.
Делать это с пандами очень просто. Откройте ваш CSV-файл с пандами:
В этом сценарии все CR / CRLF удаляются из файла CSV, а затем имеют такие строки:
Результат (в формате Excel CSV):
Вот решение с использованием панд, которое удаляет пустые строки.
Python-код для удаления пустой строки из CSV-файла без создания другого файла.
Def ReadWriteconfig_file (file):
Вы должны открыть второй файл, записать в него все непустые строки, удалить исходный файл и переименовать второй файл в исходное имя.
РЕДАКТИРОВАТЬ: настоящая пустая строка будет выглядеть как '\ n':
Строка со всеми пустыми полями будет выглядеть как '. \ n'. Если вы считаете это пустой строкой:
Открытие, закрытие, удаление и переименование файлов оставлено для вас в качестве упражнения. (подсказка: импортировать os, help (открыть), help (os.rename), help (os.unlink))
РЕДАКТИРОВАТЬ 2: Лоуренс Гонсалвес обратил мое внимание на то, что допустимый файл CSV может иметь пустые строки, встроенные в поля CSV в кавычках, например, 1, 'this\n\nis tricky',123.45 . В этом случае модуль csv позаботится об этом за вас. Прости, Лоренс, твой ответ заслуживает принятия. Модуль csv также решит проблемы, связанные со строкой типа "","",""\n .
Читайте также: