Уведомления

Группа в Telegram: @pythonsu

#1 Март 27, 2021 12:07:26

Anton13
Зарегистрирован: 2021-03-27
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как зачитать данные в модель приложения из файла?

Всем привет, есть модель

     class Human:
        def __init__(self, age, name):
            self.age = age
            self.name = name

Есть txt файл с данными:

     32
    Antonio
    
    44
    Jack
    
    31
    John

Я хочу его прочитать в файл и в приложении иметь лист со списком моделей класса Human.
Подскажите, пожалуйста, вариант, спасибо.

Офлайн

#2 Март 27, 2021 15:13:35

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Как зачитать данные в модель приложения из файла?

Обычно люди берут один из общепринятых форматов файла и читают его в одну строку кода а не выдумывают непойми что в таком виде что его непойми как читать.

В вашем случае подойдут
https://ru.wikipedia.org/wiki/YAML - https://pyyaml.org/wiki/PyYAMLDocumentation
https://ru.wikipedia.org/wiki/JSON - https://docs.python.org/3/library/json.html
https://ru.wikipedia.org/wiki/CSV - https://docs.python.org/3/library/csv.html



Отредактировано doza_and (Март 27, 2021 15:19:24)

Офлайн

#3 Март 27, 2021 15:51:20

Anton13
Зарегистрирован: 2021-03-27
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как зачитать данные в модель приложения из файла?

Ну, если исходник такой, тогда что делать…
Делать из такого txt csv что-ли…

Офлайн

#4 Март 27, 2021 16:03:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9880
Репутация: +  853  -
Профиль   Отправить e-mail  

Как зачитать данные в модель приложения из файла?

Надо написать конвертер данных.

  
>>> class Human:
...     def __init__(self, age, name):
...         self.age = age
...         self.name = name
... 
>>> def read(text):
...     clean_data = map(str.strip, text.splitlines())
...     out = []
...     n = 1
...     for i in clean_data:
...         if n == 1:
...             age = i
...         elif n == 2:
...             name = i
...             out.append(Human(age, name))
...         elif n == 3:
...             n = 0
...         n += 1
...     return out
... 
>>> 
>>> text = """\
...      32
...     Antonio
...     
...     44
...     Jack
...     
...     31
...     John
... """
>>> 
>>> humans = read(text)
>>> for i in humans:
...     print(i.name, i.age)
... 
Antonio 32
Jack 44
John 31
>>>

doza_and
Обычно люди берут один из общепринятых форматов файла и читают его в одну строку кода а не выдумывают непойми что в таком виде что его непойми как читать.
Для новичков - да. Для реального мира - очень часто бывают данные, которые никто не подгоняет удобно, так как сам не понимает, как должны быть организованы данные. Это и ломанные CSV-файлы, и неправильно сделанные JSON-файлы, и разнотипные данные, умно слитые в один файл. Особенно это заметно у Великих учёных. Они, как правило, ничего не смыслят ни в чём, кроме своей области. Так что есть смысл учиться конвертировать данные из неудобных форматов в форматы, более пригодные для обработки нормальными программами. Это больше пригодится.



Отредактировано py.user.next (Март 27, 2021 16:25:01)

Офлайн

#5 Март 27, 2021 18:52:50

Anton13
Зарегистрирован: 2021-03-27
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как зачитать данные в модель приложения из файла?

Благодарю очень.

Офлайн

#6 Март 27, 2021 23:04:58

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Как зачитать данные в модель приложения из файла?

Anton13
Ну, если исходник такой, тогда что делать…
Треснуть по башке того кто такие данные предоставляет чтобы нормально сделал.

Ну если руки коротки то последовать умному совету
py.user.next
Надо написать конвертер данных.
Это в самом деле часто приходится делать, особенно с великими учеными или полными неучами. :)))



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version