Помощь с текстовым файлом

Karina

Новичок
Пользователь
Окт 8, 2020
16
0
1
Дано текстовый файл. Все его строки, содержащие менее 10 символов, записать в другой текстовый файл. К примеру, в текстовом файле содержится стихотворение. Нужно создать программу, которая отсортирует каждую строку и запишет те, которые содержат меньше 10 символов. Буду благодарна за помощь ♥
 

vipAvoS

Новичок
Пользователь
Фев 25, 2021
7
2
3
Минск. Беларусь.
А чего тут стыдиться? :) Я и сам ещё многого не знаю. Но могу дать Вам совет. Даже два ;)
1. Пишите код с проверкой. Пример:
Python:
f = open ('another_poem.txt','r')
g=open('poem_new.txt','w')
symbols = f.readlines()

print(symbols)
Тогда Вы будете знать ЧТО содержит ваша переменная. Потом уже принты можно удалить.

2. Всё очень просто гуглится :) Запрос "запись в файл python" выдаёт кучу ссылок на статьи по теме.

А отвечая на Ваш вопрос, я бы сделал так:
Python:
file_r = 'another_poem.txt'
file_w = 'poem_new.txt'

with open(file_r, 'r') as fl_r:
    lines = fl_r.read().splitlines()

with open(file_w, 'w') as fl_w:
    for line in lines:
        if len(line) < 10:
            fl_w.write(line + '\n')
            
print('The program is completed. Check the file')
 
  • Мне нравится
Реакции: Karina

regnor

Модератор
Команда форума
Модератор
Июл 7, 2020
2 581
457
83
сделать за вас?
 

Karina

Новичок
Пользователь
Окт 8, 2020
16
0
1
я пыталась кое-что сделать
если профессиональным взглядом укажите на ошибки, то буду признательна

f = open ('another_poem.txt','r')
g=open('poem_new.txt','w')
symbols = f.readlines()
if len(symbols) <= 10:
print (symbols)
f.close()
g.close()
print('The program is completed. Check the file')


 

vipAvoS

Новичок
Пользователь
Фев 25, 2021
7
2
3
Минск. Беларусь.
На мой не профессиональный взгляд, между открытием файла и его закрытием, нужна ещё и запись...
 

Karina

Новичок
Пользователь
Окт 8, 2020
16
0
1
На мой не профессиональный взгляд, между открытием файла и его закрытием, нужна ещё и запись...

Должно ли мне быть стыдно, если я не знаю, какую запись Вы имеете в виду, и, если я спрошу это у Вас?)?
 

vipAvoS

Новичок
Пользователь
Фев 25, 2021
7
2
3
Минск. Беларусь.
Господи!!! Вы где ЭТОМУ научились?
"
Python версии 3
символы от 0 .. 9 = 10 символов! те < 9
"
Вы хоть арифметику знаете???

Да ещё и пишите "портянки" ????

Не пишите болше ничего! Не позорьтесь!
---------------------------------
Я не понял как мой пост оказался выше того, на который я отвечал????

Этот мой ответ относися к serg2a
 
Последнее редактирование:

serg2a

Новичок
Пользователь
Фев 26, 2021
8
0
1
Господи!!! Вы где ЭТОМУ научились?
"
Python версии 3
символы от 0 .. 9 = 10 символов! те < 9
"
Вы хоть арифметику знаете???

Да ещё и пишите "портянки" ????

Не пишите болше ничего! Не позорьтесь!
---------------------------------
Я не понял как мой пост оказался выше того, на который я отвечал????

Этот мой ответ относися к serg2a

строка = массив, массив начинается с 0 до 9 = 10(Элементов массива) с 0 до 10 = 11(Элементов массива)
0 = 1, 10 = 11

если вы правы, тогда почему
Python:
s = "123" # string
s[0]      # s[0] = 1
s[3]      # IndexError: string index out of range

А у девушки условие < 10(символов) в чем я ошибся так это в том что не учел символ конца строки,

если вы правы, тогда почему
Python:
s = "123\n" # string
s[0]      # s[0] = 1
s[3]      # s[3] = '\n'
s[4]      #s[4] IndexError: string index out of range

А вы сначала удаляете символ конца, затем записываете(создаете новую, в питоне нельзя изменять строки)
и уже ее пишите в файл. мой код не делает так.

почему портянки?

Спасибо что помогли увидеть ошибку.
 
Последнее редактирование:

vipAvoS

Новичок
Пользователь
Фев 25, 2021
7
2
3
Минск. Беларусь.
символы от 0 .. 9 = 10 символов! те < 9
Что именно меньше 9 ???

Да и вообще. Девушка, скорее всего, только начинает учить питон. Задала очень простой вопрос. А вы ей портянку с кодом на пол-страницы. Что она подумает? Правильно - да нафиг этот питон, если на нём для такой простой вещи нужно писать код такого размера!
 
  • Ха-ха!
Реакции: Karina

serg2a

Новичок
Пользователь
Фев 26, 2021
8
0
1
Что именно меньше 9 ???

Да и вообще. Девушка, скорее всего, только начинает учить питон. Задала очень простой вопрос. А вы ей портянку с кодом на пол-страницы. Что она подумает? Правильно - да нафиг этот питон, если на нём для такой простой вещи нужно писать код такого размера!

9 - элемент в массиве = концу строки из 10 символов.
Да вы правы. поэтому я и включил краткую версию.

Я тоже только начинаю учить питон... это одна из причин длинного кода.
 
Последнее редактирование:

Karina

Новичок
Пользователь
Окт 8, 2020
16
0
1
Благодарю всем за помощь! ♥
 

Karina

Новичок
Пользователь
Окт 8, 2020
16
0
1
Да и вообще. Девушка, скорее всего, только начинает учить питон. Задала очень простой вопрос. А вы ей портянку с кодом на пол-страницы. Что она подумает? Правильно - да нафиг этот питон, если на нём для такой простой вещи нужно писать код такого размера!

Главное не размер, а чтобы код работал!?
 

Karina

Новичок
Пользователь
Окт 8, 2020
16
0
1
А чего тут стыдиться? :) Я и сам ещё многого не знаю. Но могу дать Вам совет. Даже два ;)
1. Пишите код с проверкой. Пример:
Python:
f = open ('another_poem.txt','r')
g=open('poem_new.txt','w')
symbols = f.readlines()

print(symbols)
Тогда Вы будете знать ЧТО содержит ваша переменная. Потом уже принты можно удалить.

2. Всё очень просто гуглится :) Запрос "запись в файл python" выдаёт кучу ссылок на статьи по теме.

А отвечая на Ваш вопрос, я бы сделал так:
Python:
file_r = 'another_poem.txt'
file_w = 'poem_new.txt'

with open(file_r, 'r') as fl_r:
    lines = fl_r.read().splitlines()

with open(file_w, 'w') as fl_w:
    for line in lines:
        if len(line) < 10:
            fl_w.write(line + '\n')
           
print('The program is completed. Check the file')


Касательно этого кода, хочу сказать, что или лыжи не едут или что-то пошло не так. Протестировала на файле, который содержит стихотворение (специально брала такой, где есть строки, состоящие из менее чем 10 символов), и почему-то в результате оказывается пустой файл. С чем это связано? Буду рада совету.
 

vipAvoS

Новичок
Пользователь
Фев 25, 2021
7
2
3
Минск. Беларусь.
Касательно этого кода, хочу сказать, что или лыжи не едут или что-то пошло не так. Протестировала на файле, который содержит стихотворение (специально брала такой, где есть строки, состоящие из менее чем 10 символов), и почему-то в результате оказывается пустой файл. С чем это связано? Буду рада совету.
Я был озадачен... Запустил код у себя.
Исходный текст:
Код:
Царь

К нам на утренний рассол
Прибыл аглицкий посол,
А у нас в дому закуски --
Полгорбушки да мосол.

Снаряжайся, братец, в путь
Да съестного нам добудь --
Глухаря аль куропатку,
Аль ишо кого-нибудь.

Не смогешь -- кого винить? --
Я должон тебя казнить.
Государственное дело --
Ты улавливаешь нить?..

Федот

Нешто я да не пойму
При моем-то при уму?..
Чай, не лаптем щи хлебаю,
Сображаю, что к чему.

Получается, на мне
Вся политика в стране:
Не добуду куропатку --
Беспременно быть войне.

Чтобы аглицкий посол
С голодухи не был зол --
Головы не пожалею,
Обеспечу разносол!..

и тоже увидел пустой выходной файл...

Но всё оказалось много проще )))
Чуть дополнил код
Python:
file_r = r'n:\MT5\Files\Про Федота-стрельца.txt'
file_w = r'n:\MT5\Files\Про Федота-стрельца_new.txt'

with open(file_r, 'r', encoding='utf-8') as fl_r:
    lines = fl_r.read().splitlines()

with open(file_w, 'w', encoding='utf-8') as fl_w:
    for line in lines:
        #print(line, '>>>', len(line))
        if len(line) < 10:
            fl_w.write(line + '\n')

print('The program is completed. Check the file')
добавил кодировку в которой нужно открывать файл и получил выходной файл:
Код:
Царь




Федот
А вам нужно знать кодировку вашего исходного файла.
 

Karina

Новичок
Пользователь
Окт 8, 2020
16
0
1
Благодарю за помощь!
 

Karina

Новичок
Пользователь
Окт 8, 2020
16
0
1
Я был озадачен... Запустил код у себя.
Исходный текст:
Код:
Царь

К нам на утренний рассол
Прибыл аглицкий посол,
А у нас в дому закуски --
Полгорбушки да мосол.

Снаряжайся, братец, в путь
Да съестного нам добудь --
Глухаря аль куропатку,
Аль ишо кого-нибудь.

Не смогешь -- кого винить? --
Я должон тебя казнить.
Государственное дело --
Ты улавливаешь нить?..

Федот

Нешто я да не пойму
При моем-то при уму?..
Чай, не лаптем щи хлебаю,
Сображаю, что к чему.

Получается, на мне
Вся политика в стране:
Не добуду куропатку --
Беспременно быть войне.

Чтобы аглицкий посол
С голодухи не был зол --
Головы не пожалею,
Обеспечу разносол!..

и тоже увидел пустой выходной файл...

Но всё оказалось много проще )))
Чуть дополнил код
Python:
file_r = r'n:\MT5\Files\Про Федота-стрельца.txt'
file_w = r'n:\MT5\Files\Про Федота-стрельца_new.txt'

with open(file_r, 'r', encoding='utf-8') as fl_r:
    lines = fl_r.read().splitlines()

with open(file_w, 'w', encoding='utf-8') as fl_w:
    for line in lines:
        #print(line, '>>>', len(line))
        if len(line) < 10:
            fl_w.write(line + '\n')

print('The program is completed. Check the file')
добавил кодировку в которой нужно открывать файл и получил выходной файл:
Код:
Царь




Федот
А вам нужно знать кодировку вашего исходного файла.


Спасибо большое, всё оказалось проще, чем я думала :)
 
-1

serg2a

Новичок
Пользователь
Фев 26, 2021
8
0
1
Дано текстовый файл. Все его строки, содержащие менее 10 символов, записать в другой текстовый файл. К примеру, в текстовом файле содержится стихотворение. Нужно создать программу, которая отсортирует каждую строку и запишет те, которые содержат меньше 10 символов. Буду благодарна за помощь ♥

Python:
import os
import sys

LENS = 10

def poem_read(file:str, lens:int=LENS) -> list:
    tmp = []
    if os.path.isfile(file):
        for string in open(file):
            if len(string) <= lens:
                tmp.append(string)
    return tmp

def poem_write(file:str, poem:list):
    with open(file, 'a') as file:
        file.writelines(poem)

def poem_run(file_in:str, file_out:str):
    """Read file, sort and write new file"""

    poem = poem_read(file_in)
    if poem:
        poem.sort()
        poem_write(file_out, poem)
    else:
        print("\n\nFALL: File not found!\n\n")
        exit(1)

def main():
    """Using: program file_read file_new"""
    print(main.__doc__,  os.linesep, "--",  os.linesep)
    if len(sys.argv) > 2:
        poem_run(sys.argv[1], sys.argv[2])
    else:
        poem_run(input("Input file name: "), input("Output file name: "))

    print(f"{os.linesep} OK! {os.linesep*2}--\
             {os.linesep}Have a nice day{os.linesep}")

    return 0

if __name__ == "__main__":
    main()

Python версии 3
символы от 0 .. 9 = 10 символов + завершающий "\n" или "\r\n"!

Если кратко, тогда(Без сортировки):

Python:
FILE_IN = "old"
FILE_OUT = "new"
LENS = 10

with open(FILE_OUT, 'a') as file:
    for string in open(FILE_IN):
        if len(string) <= LENS:
            file.write(string)

Возможны проблемы связанные с кодировкой исходного текста. обходится путем добавление дополнительных параметров при открытии файла.
 
Последнее редактирование:

Форум IT Специалистов