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

Вырвать строки из txt по количеству символов в другой txt

07.02.2023, 22:27. Показов 648. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, подскажите, как реализовать такое. Есть .txt-файл со списком произвольных слов, также могут включать в себя символы и цифры
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Абхазы
Алеуты
Ангина
Арбитр
Атеизм
Агония
Альков
Аноним
Авиатор
Ажурный
Аллегро
Анархия
Арабист
Асессор
Аэробус
Автокар
Аэробика
Авангард
Агрессор
Акустика
Алюминий
Анисовка
Аперитив
Архиерей
Австрийцы
Акватория
Альтруист
Антиномия
Артистизм
Аутсайдер
Авторство
Актерство
Авантюрист
Агротехник
Альпийский
Антрополог
Артачиться
Аффектация
Автовокзал
Акварелист
абдоминоаортальный
абонент-отправитель
абразивно-химически
абразионно-бухтовый
абиогенетически
абиссопелагиаль
аблактировавший


Нужно разделить данный файл на несколько файлов в зависимости от кол-ва знаков, в идеале от 8 до 14, т.е на выходе получаем

8.txt <- здесь будут все слова, в которых 8 символов
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
Аэробика
Авангард
Агрессор
Акустика
Алюминий
Анисовка
Аперитив
Архиерей

9.txt <- здесь будут все слова, в которых 9 символов
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
Австрийцы
Акватория
Альтруист
Антиномия
Артистизм
Аутсайдер
Авторство
Актерство


10.txt <- <- здесь будут все слова, в которых 10 символов
Кликните здесь для просмотра всего текста

Code
1
2
3
4
5
6
7
8
Авантюрист
Агротехник
Альпийский
Антрополог
Артачиться
Аффектация
Автовокзал
Акварелист


и так далее, до файла 14..
Слова, которые содержат <8 и >14 символов - можно не сохранять. Если слово, к примеру, имеет вид 12Sobaka@! то это слово относится к 10 символов и оно должно залететь в 10.txt. Т.е символ=буква=цифра=знак

Добавлено через 2 часа 19 минут
Решил таким путем...

Python
1
2
3
4
5
6
7
8
with open ("main.txt", encoding="utf-8") as main_fp:
   for line in main_fp:
       len_line = len(line)-1
       name_file = str(len(line)-1) + ".txt"
       if len_line < 8 or len_line > 14:
           continue;
       with open (name_file, 'a+') as fp:
            fp.write(line)
Но с большими файлами (1гб +(от 3-5 лямов строк ) работает ну очень медленоо.. как поправить его или прикрутить какие-то скрипты может быть?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2023, 22:27
Ответы с готовыми решениями:

Создать новый файл qa.txt, который будет содержать строки с вопросами и ответами из файлов q.txt и a.txt.
В текстовом редакторе создать два текстовых файла q.txt и a.txt, которые соответственно содержат вопросы и ответы на их. Создать новый файл...

Записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt
Здравствуйте, нужно записать в text3.txt строки, которые есть и в text1.txt, и в text2.txt помогите, пожалуйста

Переименовать все файлы lab01.txt, Inf_lab02.txt … в каталоге К в lab01_Inf.txt, lab02_Inf.txt,
Пожалуйста, помогите разобраться как работать с переменной в цикле. Задание: В указанном каталоге необходимо переименовать все файлы ...

2
 Аватар для TimutGin
515 / 339 / 146
Регистрация: 16.02.2021
Сообщений: 626
08.02.2023, 01:00
Python
1
2
3
4
5
6
7
8
9
10
11
with open("main.txt", "r", encoding="utf-8" ) as f:
    text = f.read().split()
    
    for x in range(len(text)):
        s = text[x]
        k = len(s)
        print(k)
        with open(f'{k}.txt', 'a') as f:
            f.write(f"{s}\n")
    
print(text)
Добавлено через 9 минут
Цитата Сообщение от TimutGin Посмотреть сообщение
print(k)
Цитата Сообщение от TimutGin Посмотреть сообщение
print(text)
Можно удалить

Добавлено через 1 час 32 минуты
Этот вроде побыстрее, но так как нет большого файла(1гб) то к сожалению не могу проверить.
Возможно код можно как-то компактней написать,но я пока неразобрался,может кто другой подскажет.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
with open("a.txt", "r") as f:
    text = f.read().split()
    
w8,w9,w10,w11,w12,w13,w14 = [],[],[],[],[],[],[]
 
for x in range(len(text)):
    s = text[x]
    k = len(s)
    if k < 8 or k > 14:
           continue;
    if 8 <= k <= 14:
        if k == 8:
            if s not in w8:
                w8.append(s)
        if k == 9:
            if s not in w9:
                w9.append(s)
        if k == 10:
            if s not in w10:
                w10.append(s)
        if k == 11:
            if s not in w11:
                w11.append(s)
        if k == 12:
            if s not in w12:
                w12.append(s)
        if k == 13:
            if s not in w13:
                w13.append(s)
        if k == 14:
            if s not in w14:
                w14.append(s)
 
with open(f'{8}.txt', 'a') as f:  
    f.write("\n".join(w8))
with open(f'{9}.txt', 'a') as f:  
    f.write("\n".join(w9))
with open(f'{10}.txt', 'a') as f:  
    f.write("\n".join(w10))
with open(f'{11}.txt', 'a') as f:  
    f.write("\n".join(w11))
with open(f'{12}.txt', 'a') as f:  
    f.write("\n".join(w12))
with open(f'{13}.txt', 'a') as f:  
    f.write("\n".join(w13))
with open(f'{14}.txt', 'a') as f:  
    f.write("\n".join(w14))
print(w8)
print(w9)
print(w10)
print(w11)
print(w12)
print(w13)
print(w14)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
08.02.2023, 09:16
Цитата Сообщение от Klava123 Посмотреть сообщение
работает ну очень медленоо..
Разумеется. Ты ж стотыщ раз открываешь/закрываешь файл на запись. А это весьма затратная операция.
Пробуй так например
Python
1
2
3
4
5
6
with open('in.txt','r') as f:
    txt = f.read().split()
    
for i in range(8, 15):
    with open(f'{i}.txt', 'w') as f:
        f.write('\n'.join(list(filter(lambda x: len(x)==i, txt))))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2023, 09:16
Помогаю со студенческими работами здесь

Как вырезанный кусок из файла txt записать в другой файл txt
Дан огромный файл txt с тысячами строк типа: 0.000000,-0.015813,0.081000,-0.045125 0.002500,-0.008125,0.065750,-0.029625 ...

Переместить текст из одного txt файла в другой txt файл
Есть файл Admin.txt и Admin_Settings.txt Нужно что бы при нажатии на кнопку весь текст и все строки из Admin_Settings.txt переместились в...

Копирование данных из одного файла txt в другой файл txt
Помогите, пожалуйста, создать bat файл, который бы из одного документа, например, 1.txt копировал бы данные в другой документ с названием...

Как брать числа из списка .txt и сохранение в другой .txt ?
Приветствую Всех Друзья! Не силен в Пайтоне, но нужно изменить код. В этом скрипте есть формула где в начале задаются числы x1 и x2 в...

Копировать определённый текст с одного txt файла в другой txt
Здравтсвуйте. Подскажите как написать в PowerShell задачу (если это делается не в PowerShell, подскажите в чем, что бы я создал тему там): ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru