【问题标题】:Python proper way to store dataPython存储数据的正确方法
【发布时间】:2013-05-08 05:46:55
【问题描述】:

我正在尝试使用 5 个属性存储每个名称。例如:

name=apple 
attributes=[red,sweet,soft,fruit,healthy]

每个名称和属性将由用户输入。并且可以有多达数百个条目。目前,我知道存储值的唯一方法是将其写入这样的文本文件:

lines=[]
lines.append('{}|{}|{}|{}|{}|{} \n'.format(apple,red,sweet,soft,fruit,healthy))
myfile=open("test","a")
myfile.writelines(lines)
myfile.close()

所以当我想检索值时,我必须使用 split('|') 命令单独分割每一行,如下所示:

for lines in open('test'):
    lines_splitted=lines.split('|')
if lines_splitted[0]=='apple':
    do something

除了我上面所做的之外,还有什么更好的方法来存储数据吗?我希望通过调用项目的名称(例如苹果)来轻松检索属性供您参考,我是自学的,我只知道 python。因此,我正在寻找一种仅在 python 中执行此操作的方法。没有第 3 方或其他语言。

【问题讨论】:

    标签: python database


    【解决方案1】:

    您正在寻找的通用术语是序列化,这对于在 SO 或 Google 上进行搜索很有帮助。

    对于正常情况,在 Python 中执行此操作的最简单方法可能是使用广为人知的 JSON 格式,标准库 json 模块支持该格式。

    【讨论】:

    • 是什么让您更喜欢 json 而不是其他选项,例如 csv?
    • 两者同样有效且各有用途。 Json 似乎是编程中的新“事物”,对于嵌套结构和传输此类数据特别有用,而 CSV 则更加僵化,具有类似表格的结构。
    • 一般来说,灵活性(另外,“csv”并不是真正的单一格式,而是对格式化表格数据方式的模糊描述;有很多变体)。不过,在 OP 的情况下,“表格数据”可能很合适。标准库 csv 模块也支持 CSV,它可以处理相当数量的标准变体 IIRC。
    • 我从来不知道有这样的词。 “序列化”让我在谷歌上搜索变得容易了 20 倍。谢谢 Karl +1'd
    • 还有"marshalling",作为一个概念还是值得理解的,虽然这里似乎不相关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-28
    • 2018-03-25
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    相关资源
    最近更新 更多