我想通过UDP / TCP发送一个列表,但由于它们只支持字符串列表,我需要将列表转换为字符串并将其转换回来。
我的清单就像
['S1','S2','H1','C1','D8']
我知道我可以使用
string_ = ''.join(list_)
将其转换为字符串。
但是如何将其转换回来?
或者还有另一种方法可以使用UDP / TCP发送列表?
答案 0 :(得分:3)
自定义格式取决于有关列表项格式的假设,因此json看起来是最安全的方式:
>>> import json
>>> data = json.dumps(['S1','S2','H1','C1','D8'])
>>> data
'["S1", "S2", "H1", "C1", "D8"]'
>>> json.loads(data)
[u'S1', u'S2', u'H1', u'C1', u'D8']
答案 1 :(得分:1)
使用分隔符:
string_ = ';'.join(list_)
list_ = string_.split(';')
您需要确保分隔符不在您的字符串中。如果是,您可能需要编码。
答案 2 :(得分:0)
也许您可以在列表元素之间添加一个分隔符,并使用它调用split
来获取列表。
修改强>
正如 @Eric Fortin 在他的回答中提到的那样,分隔符应该是不能在你的字符串中的东西。一种可能性是 - 正如他所建议的 - 使用编码。另一种可能性是逐个发送元素,但这显然会增加通信开销。
请注意,您的分隔符可能是一个序列,它不需要是一个单个字符。
str_list = separator.join(list_)
new_list = str_list.split(separator)
如果你知道列表元素的格式,你甚至可以不使用分隔符!
str_list = "".join(list_)
re.split(reg_exp, str_list)
答案 3 :(得分:0)