簡體   English   中英

將列表列表的字符串..轉換為..列表的列表,所有單個元素都作為字符串

[英]Convert String of List of list ..to ..List of List with all individual elements as strings

輸入在一個拉伸中給出:

'[[F1,S1],[F2,S2],[F3,S3],[F1,S2],[F2,S3],[F3,S2],[F2,S1],[F4,S1],[F4,S3],[F5,S1]]'

我想將“列表列表的字符串”轉換為“所有單個元素作為字符串的列表列表”

[['F1','S1'],['F2','S2'],['F3','S3'],['F1','S2'],['F2','S3'],['F3','S2'],['F2','S1'],['F4','S1'],['F4','S3'],['F5','S1']]

如何?

我將假設輸入字符串始終被格式化,字符[ ,]周圍沒有任何空格。 這可以在沒有任何花哨或危險的情況下實現,例如eval

  1. 從開頭刪除[[]] ,並以字符串切片結尾。
  2. 然后,拆分],[將內部列表彼此分開。
  3. 然后,在 上拆分每個內部列表,從而將元素彼此分開。

有兩種特殊情況需要處理。 首先,如果外部列表為空,則字符串不以[[]]開頭或結尾。 其次,如果其中一個內部列表為空,則split結果將生成一個包含單個空字符串的列表,此時正確的 output 應該是一個空列表。

def parse_2d_list(s):
    if s == '[]':
        return []
    else:
        parts = s[2:-2].split('],[')
        return [p.split(',') if p else [] for p in parts]

Output:

>>> parse_2d_list('[[F1,S1],[F2,S2],[F3,S3]]')
[['F1', 'S1'], ['F2', 'S2'], ['F3', 'S3']]

這會更好

def parse_2d_list(s):
    parts = s[2:-2].split('],[')
    return [p.split(',') for p in parts]

暫無
暫無

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

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