Python将集合转换为字符串,反之亦然

Python将集合转换为字符串,反之亦然,python,string,python-2.7,set,Python,String,Python 2.7,Set,设置为字符串。显而易见: >>> s = set([1,2,3]) >>> s set([1, 2, 3]) >>> str(s) 'set([1, 2, 3])' 要设置的字符串?也许是这样 >>> set(map(int,str(s).split('set([')[-1].split('])')[0].split(','))) set([1, 2, 3]) 非常难看。是否有更好的方法序列化/反序列化集合?使用repr

设置为字符串。显而易见:

>>> s = set([1,2,3])
>>> s
set([1, 2, 3])
>>> str(s)
'set([1, 2, 3])'
要设置的字符串?也许是这样

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

非常难看。是否有更好的方法序列化/反序列化集合?

使用
repr
eval

>>> s = set([1,2,3])
>>> strs = repr(s)
>>> strs
'set([1, 2, 3])'
>>> eval(strs)
set([1, 2, 3])
请注意,如果字符串的来源未知,则
eval
不安全,为了更安全地转换,请选择
ast.literal\u eval

>>> from ast import literal_eval
>>> s = set([10, 20, 30])
>>> lis = str(list(s))
>>> set(literal_eval(lis))
set([10, 20, 30])
有关报告的帮助信息:

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

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

>>> str = ', '.join(str(e) for e in s)
>>> str = 'set(%s)' % str
>>> str
'set(1, 2, 3)'

如果不需要序列化文本为人类可读,则可以使用

结果:

serialized:
c__builtin__
set
p0
((lp1
I1
aI2
aI3
atp2
Rp3
.
deserialized:
set([1, 2, 3])

这个问题有点不清楚,因为问题的标题是关于字符串和集合转换,但最后的问题是如何序列化

让我更新一下is的概念,它是将一个对象(包括它所指的对象)编码为字节数据流的过程

如果有兴趣序列化,可以使用:

json.dumps  -> serialize
json.loads  -> deserialize
如果您的问题更多的是关于如何将set转换为string和string转换为set,那么请使用下面的代码(在python3中进行了测试)

要设置的字符串

set('abca')
设置为字符串

''.join(some_var_set)
例如:

def test():
    some_var_set=set('abca')
    print("here is the set:",some_var_set,type(some_var_set))
    some_var_string=''.join(some_var_set)    
    print("here is the string:",some_var_string,type(some_var_string))

test()
1) 设置为字符串:
s=set({1,2,3,4})#设置int值。

将set的每个值转换为字符串,并将它们连接起来以返回一个字符串,其中
作为分隔符
str_val=','.加入(列表(映射(str,s)))

stru val的输出
'1,2,3,4'

2) 要设置的字符串: 使用
作为分隔符拆分字符串。它创建一个列表。然后将列表转换为一个集合

s=set(str_val.split(“,”)


s的输出
{'2','3','4','1'}

ast.literal\u eval,不是eval@thg435我不认为这是OP想要做的。问题是:Python转换集为字符串,反之亦然。
def test():
    some_var_set=set('abca')
    print("here is the set:",some_var_set,type(some_var_set))
    some_var_string=''.join(some_var_set)    
    print("here is the string:",some_var_string,type(some_var_string))

test()