@WaterWalker
Обычный 12-летний житель Одессы.

Python как разделить текстовый файл на несколько по длине строки?

Есть огромный текстовый файл с именем words_alpha.txt, формата:
Слово1
Слово2
Слово3
и т.д.

Нужно разделить его на несколько файлов по длине строки (слова). То есть в файле words1 слова, состоящие из одной буквы, в words2 - из двух букв, и т.д. Сколько будет в итоге файлов неизвестно. Отмечу, что в исходном файле размер слов идёт не по порядку, и не подряд.
  • Вопрос задан
  • 2472 просмотра
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
f_handlers = {}
with open('words_alpha.txt', 'r') as inp_file:
    for line in inp_file:
        w_len = len(line.strip())
        if w_len == 0:   # исключаем слова с нулевой длиной
            continue
        fn = f'words_{w_len}.txt'
        f = f_handlers.setdefault(fn, open(fn, 'w+'))
        f.write(line)

for handler in f_handlers.values():
    handler.close()

В папке создаст файлы с искомым вида
words_<число>.txt
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
tumbler
@tumbler Куратор тега Python
бекенд-разработчик на python
Ну так читаете и по длине строки пишите в разные файлы.
Ответ написан
Комментировать
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
py "('x'*random.randint(1, 10) for _ in range(100))" | \ 
py -x "open(f'tmp/path_to_dest_folder/words_len={len(x):05}.txt', 'a').write(x+'\n')"

Первая строчка генерит слова, в вашем случае там будет cat big_file.txt.
Вторая строчка разгребает все по файлам.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы