簡體   English   中英

如何將列表轉換為字符串,然后將其轉換回python?

[英]How to convert a list into a string and then convert it back in python?

我想通過UDP / TCP發送列表,但是由於它們僅支持字符串列表,因此我需要將列表轉換為字符串並將其轉換回。

我的清單就像

['S1','S2','H1','C1','D8']

我知道我可以用

string_ = ''.join(list_) 

將其轉換為字符串。

但是如何將其轉換回去呢?

還是我可以使用UDP / TCP發送列表的另一種方法?

自定義格式取決於有關列表項格式的假設,因此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']

使用分隔符:

string_ = ';'.join(list_)

list_ = string_.split(';')

您需要確保分隔符不能在字符串中。 如果是這樣,則可能需要編碼。

也許您可以在列表元素之間添加分隔符,並使用它調用split來獲取列表。

編輯:

正如@Eric Fortin在回答中提到的那樣,分隔符應該是您的字符串中不能包含的內容。 正如他建議的那樣,一種可能性是使用編碼。 另一個可能性是一個元素一個元素地發送,但這顯然會增加通信開銷。

請注意,分隔符可以是一個序列,而不必是單個字符。

str_list = separator.join(list_)
new_list = str_list.split(separator)

如果您知道列表元素的格式,甚至可以不使用分隔符!

str_list = "".join(list_)
re.split(reg_exp, str_list)

如果網絡通信的兩端都有python,則可以使用pickle模塊設計中的dumpsloads功能,特別是用於序列化python對象:

import pickle

a = ['S1','S2','H1','C1','D8']
string_ = pickle.dumps(a)

...

a = pickle.loads(string_)

否則@bereal提出的解決方案更好,因為大多數編程語言都有json庫。 但這需要對json不支持的數據類型進行一些處理。

編輯

正如@bereal所注意到的,因為pickle實際上是一種可執行語言,所以它可能存在安全性問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM