繁体   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