文字列に設定します。明らか:
>>> 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_eval
より安全な変換:
>>> from ast import literal_eval
>>> s = set([10, 20, 30])
>>> lis = str(list(s))
>>> set(literal_eval(lis))
set([10, 20, 30])
repr
のヘルプ:
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)'
シリアル化されたテキストを人間が読めるようにする必要がない場合は、 pickle
を使用できます。
import pickle
s = set([1,2,3])
serialized_s = pickle.dumps(s)
print "serialized:"
print serialized_s
deserialized_s = pickle.loads(serialized_s)
print "deserialized:"
print deserialized_s
結果:
serialized:
c__builtin__
set
p0
((lp1
I1
aI2
aI3
atp2
Rp3
.
deserialized:
set([1, 2, 3])
質問のタイトルが文字列とセット変換について尋ねているので、質問はほとんど不明ですが、最後の質問はどのようにシリアル化するのですか? !
シリアル化 の概念を更新してみましょう。これは、オブジェクトを参照するオブジェクトを含むオブジェクトをバイトデータのストリームとしてエンコードするプロセスです。
シリアル化に関心がある場合は、次を使用できます。
json.dumps -> serialize
json.loads -> deserialize
セットを文字列に変換する方法と設定する文字列についての質問であれば、以下のコードを使用してください(Python 3)でテストされています)
設定する文字列
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()