Удалить каждую пустую строку в файле - Python / JSONl - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть несколько наборов данных от использования скребка твиттера. Когда я использую скребок, для дальнейшего анализа данных мне нужен файл, содержащий все строки одну за другой. Я собрал данные в определенное время во время события, поэтому данные не могут быть восстановлены с использованием нового кода. Мне нужно написать некоторый код, который удаляет все эти пустые строки между каждым твитом.

Вот пример некоторых данных в файле.

1: Data Data Data etc
2: 
3: data data data
4: 

Я пробовал так много Различные способы удалить эти пустые строки безуспешно. Мой текущий код, который я пробую, выглядит следующим образом:

f = open(r"stream_london.jsonl", "r")
text = f.read()
lines = text.splitlines()

for line in lines:
    if line.isspace() == True:
        lines.write(line)

У меня нет успеха. Мне нужен код для перезаписи текущего файла так, чтобы присутствовали все данные, с записью 1 в строке 1 и записью 2 в строке 2, а не в настоящее время в строках 1, 3, 5, 7 и т. Д. c.

Кто-нибудь может мне помочь с этим? Мне удалось сравнительно легко выполнить все операции с твиттером, но теперь я разочарован тем, что не могу решить такую ​​простую задачу, как убрать пустые строки и переместить все данные вверх, чтобы сжать их.

Ответы [ 4 ]

1 голос
/ 24 февраля 2020

Если вы на 101% уверены, что каждая четная строка должна быть удалена, вы можете пропустить проверку на наличие пустой строки (поскольку, учитывая ваш комментарий, она, очевидно, содержит больше, чем пробел), и вместо этого проверить номер строки:

with open("stream_london.jsonl") as infile, open("stream_london_new.jsonl", "w") as outfile:
    for i, line in enumerate(infile):
        if i % 2:   # counting starts at 0, and `i % 2` is true for odd numbers
            continue
        outfile.write(line)
0 голосов
/ 10 марта 2020

Просто хедз-ап для тех, кто ищет простое решение!

Я использовал VScode в качестве своего текстового редактора, а не писал сценарий Python или любой код ..

Если вы используете команду замены в текстовом редакторе и заменяете '\ n \ n' на '\ n', это удалит каждую пустую строку!

0 голосов
/ 24 февраля 2020
    for line in lines:
        if not line.strip():
            print(line)

Должно работать. String.strip() удаляет лишние пробелы в конце и начале строки, если аргумент не передан. Если вы передадите аргумент (должен быть строкой), символы в аргументе будут удалены из конца и начнут вместо него.

0 голосов
/ 24 февраля 2020

Попробуйте это:

with open(r"stream_london.jsonl") as fh:
    for line in fh:
        if line.strip():
            print(line)  # or do other stuff with non-blank lines
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...