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()