2017-02-22 2 views
-1

Я действительно новичок в Python (только начал программировать 2 недели назад и все еще пользуюсь терминологией), и мне бы очень понравилось понимание списков и текстовых файлов.Python: Чтение и редактирование списка в текстовом файле

У меня есть текстовый файл, в котором хранится список (я также прочитал, что он называется массивом - это правильно?) Деталей автомобиля, например.

[1,Nissan, Red, 5, 2017] 
[2,Ford, Blue, 8, 2012] 
[3,Nissan, Yellow, 9, 2001] 

Мой первый вопрос касается «Эти списки?». Являются ли они то же самое, как кодирование:

Car1 = [1,Nissan,Red, 2017] 
Car2 = [2,Ford, Blue, 2012] 

Если текстовый файл такой же, как и выше - Как вызвать данные в Car1, Car2 и т.д.?

Мой второй вопрос: как я скажу, что вы ищете автомобиль '2', а затем измените год, скажем, с 2012 по 2016 год?

Любая помощь будет очень оценена.

+1

Почему бы не использовать 'pickle' для хранения объекта двоичный файл в файл? –

+1

То, что вы смотрите, называется сериализацией. Вы пытаетесь найти правильный способ сериализации некоторых данных. Массив не является списком, но поскольку массивы являются наиболее часто используемой коллекцией на многих языках, а списки являются наиболее часто используемой коллекцией в Python, люди знают, что вы имеете в виду, когда говорите массив (даже если они также знают, что вы неправильно).Объекты, которые вы там написали, были бы лучше, чем кортежи, хотя «(1,« Ниссан »,« Красный », 2017)», поскольку они неоднородны ('int',' str', 'str',' str', int', 'int') –

+1

Если у вас есть тонна этих данных, и вы используете их для проекта, отличного от игрушек, теперь самое подходящее время, чтобы научиться правильно сериализовать. Посмотрите на модуль 'sqlite3' stdlib. Посмотрите, как создать сильную структуру базы данных и поддерживать ее правильно. –

ответ

1

Списки и массивы являются синонимами.

Вопрос 1

Обычно, когда данные хранятся, она хранится в виде текстового файла с разделителями. Именно здесь записи данных разделяются каким-то особым символом. Например, если файл содержал

1,Nissan,Red,5,2017 

Тогда это будет разделенный запятыми текстовый файл (CSV). Обычно вы не хотите хранить данные, поскольку они будут отформатированы на определенном языке, как в вашем примере.

Вопрос 2

Словари в Python, вероятно, необходимо, чтобы ваши данные будут индексироваться по именам, а не позиции. Если вы должны были хранить данные как:

cars = [ 
    { 
    "index":1, 
    "brand":"Nissan", 
    "color":"Red", 
    "year": 2017 
    },{ 
    "index":2, 
    "brand":"Ford", 
    "color":"Blue", 
    "year": 2012 
    } 
] 

Тогда можно установить cars[1]["year"] = 2016

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

+0

Обозначенный символом текст - это просто _one_ способ хранения данных в файлах. Там бесконечно много других возможностей. (Не все из них практичны, конечно.) –

+0

Списки и массивы не являются синонимами. Обратите внимание, что у нас есть [правильные массивы в Python] (https://docs.python.org/3/library/array.html) и что они не являются списками. –

1

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

{"no": 1, "maker": "Ford", "doors": "4", "year": 2016} 

Хранение и чтение dicts из файла довольно легко с pickle или встроенный json library