Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何进行二维str分割_Python_Python 3.x - Fatal编程技术网

Python 如何进行二维str分割

Python 如何进行二维str分割,python,python-3.x,Python,Python 3.x,我有一个字符串看起来像(请注意我给出的范围是1.1到1.3) 我想要一个二维数组,看起来像 [1][1], [1][2] , <== range is filled now [1][3] , [1][5], [2][5], [1][1], [1] [2],想法: 删除所有空格:'1.1-1.3、1.5、2.5' 用逗号拆分输入:'1.1-1.3,1.5,2.5' 将它们解析为数字或范围:[(1,1,1,3)、(1,5)、(2,5)] 生成数据并将其附加到列表中:[[1,1],[1,2],

我有一个字符串看起来像(请注意我给出的范围是1.1到1.3)

我想要一个二维数组,看起来像

[1][1],
[1][2] , <== range is filled now
[1][3] ,
[1][5],
[2][5],
[1][1],
[1] [2],想法:

  • 删除所有空格:
    '1.1-1.3、1.5、2.5'
  • 用逗号拆分输入:
    '1.1-1.3,1.5,2.5'
  • 将它们解析为数字或范围:
    [(1,1,1,3)、(1,5)、(2,5)]
  • 生成数据并将其附加到列表中:
    [[1,1],[1,2],[1,3],[1,5],[2,5]]
  • 代码:


    到目前为止,我们做了哪些尝试?
    [1][1],
    [1][2] , <== range is filled now
    [1][3] ,
    [1][5],
    [2][5],
    
    import re
    
    s = '1.1 -1.3 ,1.5, 2.5'
    items = s.replace(' ', '').split(',')
    
    result = []
    for item in items:
        v = list(map(
            lambda x: int(x) if x else None,
            re.match(r'(\d+).(\d+)(?:-(\d+).(\d+))?', item).groups()
        ))
        if not v[2]:
            result.append(v[:2])
        else:
            result.extend([[v[0], i] for i in range(v[2], v[3] + 1)])
    
    print(result)