Python 将集转换为字符串,反之亦然 [英] Python convert set to string and vice versa

查看:53
本文介绍了Python 将集转换为字符串,反之亦然的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

设置为字符串.很明显:

<预><代码>>>>s = 设置([1,2,3])>>>秒设置([1, 2, 3])>>>字符串'设置([1, 2, 3])'

要设置的字符串?也许像这样?

<预><代码>>>>set(map(int,str(s).split('set([')[-1].split('])')[0].split(',')))设置([1, 2, 3])

太丑了.有没有更好的方法来序列化/反序列化集合?

解决方案

使用repreval:

<预><代码>>>>s = 设置([1,2,3])>>>strs = repr(s)>>>字符串'设置([1, 2, 3])'>>>评估(字符串)设置([1, 2, 3])

请注意,如果字符串的来源未知,eval 是不安全的,为了更安全的转换,更喜欢 ast.literal_eval:

<预><代码>>>>从 ast 导入literal_eval>>>s = set([10, 20, 30])>>>lis = str(list(s))>>>设置(literal_eval(lis))设置([10, 20, 30])

关于repr的帮助:

repr(object) ->细绳返回对象的规范字符串表示形式.对于大多数对象类型,eval(repr(object)) == object.

Set to string. Obvious:

>>> s = set([1,2,3])
>>> s
set([1, 2, 3])
>>> str(s)
'set([1, 2, 3])'

String to set? Maybe like this?

>>> set(map(int,str(s).split('set([')[-1].split('])')[0].split(',')))
set([1, 2, 3])

Extremely ugly. Is there better way to serialize/deserialize sets?

解决方案

Use repr and eval:

>>> s = set([1,2,3])
>>> strs = repr(s)
>>> strs
'set([1, 2, 3])'
>>> eval(strs)
set([1, 2, 3])

Note that eval is not safe if the source of string is unknown, prefer ast.literal_eval for safer conversion:

>>> from ast import literal_eval
>>> s = set([10, 20, 30])
>>> lis = str(list(s))
>>> set(literal_eval(lis))
set([10, 20, 30])

help on repr:

repr(object) -> string
Return the canonical string representation of the object.
For most object types, eval(repr(object)) == object.

这篇关于Python 将集转换为字符串,反之亦然的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆