将列表或用户生成的字符串转换为单个字符串

时间:2015-05-31 23:03:33

标签: python

我从用户那里得到一些输入作为字符串列表,即:

['a','b','c','d']

字符串可以是" hat"一篇短文。我需要将此列表作为字符串存储在我的数据库中,并将该字符串拉出并稍后将其转回列表。有关最安全/最快方法的建议吗?到目前为止,我已经考虑过了:

  • csv
  • json
  • 使用较长的分隔符字符串(&break;

3 个答案:

答案 0 :(得分:2)

您想要做的就是将列表序列化为文件。 pickle module允许您轻松完成此操作。

以下是一个例子:

import pickle
data = ['a', 'b', 'c', 'd']
with open('myfile.txt', 'wb') as f:
    pickle.dump(data, f)
with open('myfile.txt', 'rb') as f:
    read_data = pickle.load(f)
print read_data

修改

如果您想将列表推送到Neo4J数据库,则必须使用Python clients library之一。 我将演示如何使用Py2neo

from py2neo import Node
list1 = Node("DataList", name="list1")
list1.properties['val'] = ['a', 'b', 'c', 'd'] 
list1.push()

当然,这是非常的方式,可能你会以不同的方式做到这一点 - 取决于你想要实现的目标。

答案 1 :(得分:2)

到目前为止,我的偏好是msgpack(和xml)。它具有与protocol.dumps类似的规范接口protocol.loads / json,并支持类似于json和其他打包库的所有Python基类型。

    人工和程序
  • json 可读很多工具,例如jsonselect或PostgreSQL。

  • pickle 方便 复杂python类型/类 #lazy

  • msgpack是高效率的&太空明智。您可以轻松地将其与json交换,并且它不会“膨胀”。它适用于utf-8。

  • 对于列表和表格,
  • csv 确定。它比json更紧凑,并且在#security控制下易于解析。它可以节省一些CPU cyles&带宽。默认情况下,它不支持嵌套列表。

  • xml是可移植的,详细的验证框架使其更易于理解。它有很多工具。

  

使用较长的分隔符字符串

这看起来像使用“罕见”字符,它可以打破。如果这很重要,那么漫长的事情就会使它成为一种性能负担。

  

Neo4j的

由于您使用的是Neo4J,最好使用json以便更轻松地与资源管理器兼容。

提示:永远不要在协议中使用list,最好有最小的可能消息,但是当出现错误时,所有代码都不可读或混乱。向后兼容性是一种负担。我更喜欢dict来表示对象,而list来表示真实列表或set对象。 使用字典允许应用程序/协议自我文档。 HTTP 1.x就是这样做的。

答案 2 :(得分:1)

如果要直接序列化为字符串,可以使用pickle.dumps

import pickle
L = ['a','b','c','d']
pickle.dumps(L)
b'\x80\x03]q\x00(X\x01\x00\x00\x00aq\x01X\x01\x00\x00\x00bq\x02X\x01\x00\x00\x00cq\x03X\x01\x00\x00\x00dq\x04e.'