Set to string. Obvious:
JavaScript
x
6
1
>>> s = set([1,2,3])
2
>>> s
3
set([1, 2, 3])
4
>>> str(s)
5
'set([1, 2, 3])'
6
String to set? Maybe like this?
JavaScript
1
3
1
>>> set(map(int,str(s).split('set([')[-1].split('])')[0].split(',')))
2
set([1, 2, 3])
3
Extremely ugly. Is there better way to serialize/deserialize sets?
Advertisement
Answer
Use repr
and eval
:
JavaScript
1
7
1
>>> s = set([1,2,3])
2
>>> strs = repr(s)
3
>>> strs
4
'set([1, 2, 3])'
5
>>> eval(strs)
6
set([1, 2, 3])
7
Note that eval
is not safe if the source of string is unknown, prefer ast.literal_eval
for safer conversion:
JavaScript
1
6
1
>>> from ast import literal_eval
2
>>> s = set([10, 20, 30])
3
>>> lis = str(list(s))
4
>>> set(literal_eval(lis))
5
set([10, 20, 30])
6
help on repr
:
JavaScript
1
4
1
repr(object) -> string
2
Return the canonical string representation of the object.
3
For most object types, eval(repr(object)) == object.
4