Python将set转换为string,反之亦然

ov7*_*v7a 23 python string set python-2.7

设置为字符串.明显:

>>> s = set([1,2,3])
>>> s
set([1, 2, 3])
>>> str(s)
'set([1, 2, 3])'
Run Code Online (Sandbox Code Playgroud)

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

>>> set(map(int,str(s).split('set([')[-1].split('])')[0].split(',')))
set([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

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

Ash*_*ary 30

使用repreval:

>>> s = set([1,2,3])
>>> strs = repr(s)
>>> strs
'set([1, 2, 3])'
>>> eval(strs)
set([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

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

>>> from ast import literal_eval
>>> s = set([10, 20, 30])
>>> lis = str(list(s))
>>> set(literal_eval(lis))
set([10, 20, 30])
Run Code Online (Sandbox Code Playgroud)

帮助repr:

repr(object) -> string
Return the canonical string representation of the object.
For most object types, eval(repr(object)) == object.
Run Code Online (Sandbox Code Playgroud)

  • ast.literal_eval,而不是eval (2认同)

Ade*_*taş 7

这样尝试

>>> 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)'
Run Code Online (Sandbox Code Playgroud)

  • 我不认为这是OP要做的。 (2认同)

gre*_*pit 5

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

让我刷新一下序列化的概念是将对象(包括它所引用的对象)编码为字节数据流的过程。

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

json.dumps  -> serialize
json.loads  -> deserialize
Run Code Online (Sandbox Code Playgroud)

如果您的问题更多是关于如何将 set 转换为 string 和 string to set 然后使用下面的代码(它在 Python 3 中测试过)

要设置的字符串

set('abca')
Run Code Online (Sandbox Code Playgroud)

设置为字符串

''.join(some_var_set)
Run Code Online (Sandbox Code Playgroud)

例子:

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()
Run Code Online (Sandbox Code Playgroud)


Kri*_*uni 5

1)设置为字符串:

s = set({1,2,3,4}) # set with int values.

将 set 的每个值转换为字符串,并将它们连接起来以返回一个字符串并,作为分隔符。
str_val = ', '.join(list(map(str, s)))

输出str_val'1, 2, 3, 4'

2)要设置的字符串:

,使用作为分隔符分割字符串。它创建一个列表。然后将列表转换为集合。

s = set(str_val.split(","))

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