Python字符串剥离和拆分

Python字符串剥离和拆分,python,string,split,Python,String,Split,我正在处理图像元数据,能够提取如下所示的字符串 Cube1[visible:true, mode:Normal]{r:Cube1.R, g:Cube1.G, b:Cube1.B, a:Cube1.A}, Ground[visible:true, mode:Normal]{r:Ground.R, g:Ground.G, b:Ground.B, a:Ground.A}, Cube3[visible:true, mode:Normal]{r:Cube3.R, g:Cube3.G, b:Cube3.B,

我正在处理图像元数据,能够提取如下所示的字符串

Cube1[visible:true, mode:Normal]{r:Cube1.R, g:Cube1.G, b:Cube1.B, a:Cube1.A},
Ground[visible:true, mode:Normal]{r:Ground.R, g:Ground.G, b:Ground.B, a:Ground.A},
Cube3[visible:true, mode:Normal]{r:Cube3.R, g:Cube3.G, b:Cube3.B, a:Cube3.A},
Cube4[visible:true, mode:Normal]{r:Cube4.R, g:Cube4.G, b:Cube4.B, a:Cube4.A},
Sphere[visible:true, mode:Normal]{r:Sphere.R, g:Sphere.G, b:Sphere.B, a:Sphere.A},
OilTank[visible:true, mode:Normal]{r:OilTank.R, g:OilTank.G, b:OilTank.B, a:OilTank.A},
Cube2[visible:true, mode:Normal]{r:Cube2.R, g:Cube2.G, b:Cube2.B, a:Cube2.A}
我想把这一大堆东西只转换成图层名。我还需要订单保持不变。因此,在这种情况下:

Cube1
Ground
Cube3
Cube4
Sphere
OilTank
Cube2

我试过使用“分割”和“切片”。我假设这里有一个层次结构,但我不确定下一步该去哪里。

如果数据确实是这样格式化的:

    import re
    i = [the listed string] 
    names = [j.strip('[') for j in re.findall("\w+\[\.*", i)]
输出:

['Cube1', 'Ground', 'Cube3', 'Cube4', 'Sphere', 'OilTank', 'Cube2']

我对python了解不多,但我在逻辑方面的想法是:

  • 按逗号字符拆分
  • 使用子字符串(indexOf)或类似的python操作在结果数组上循环并切断第一个“[”之后的所有内容
  • 然后再次循环遍历数组,将字符串重新连接在一起

  • 很抱歉,我不知道执行此操作的具体命令。希望有帮助!

    如果您只需要最左边的部分,我将使用:

    name, _ = line.split("[", 1)
    

    如果您需要更复杂的东西,我会考虑在
    re
    模块中使用正则表达式……请告诉我,我可以提出一些建议。

    正则表达式是不必要的,假设这确实是数据的精确格式

    [i.split('[', 1)[0] for i in lst]
    
    使用字符串拆分:

    names = [ x.split('[')[0] for x in your_text.split('\n') ]
    
    对于正则表达式:

    import re
    names = re.findall(r'^\w+', your_text, re.MULTILINE)
    
    >>> mess = 'Cube1[visible:true, mode:Normal]{r:Cube1.R, g:Cube1.G, b:Cube1.B, a:Cube1.A},\nGround[visible:true, mode:Normal]{r:Ground.R, g:Ground.G, b:Ground.B, a:Ground.A},\nCube3[visible:true, mode:Normal]{r:Cube3.R, g:Cube3.G, b:Cube3.B, a:Cube3.A},\nCube4[visible:true, mode:Normal]{r:Cube4.R, g:Cube4.G, b:Cube4.B, a:Cube4.A},\nSphere[visible:true, mode:Normal]{r:Sphere.R, g:Sphere.G, b:Sphere.B, a:Sphere.A},\nOilTank[visible:true, mode:Normal]{r:OilTank.R, g:OilTank.G, b:OilTank.B, a:OilTank.A},\nCube2[visible:true, mode:Normal]{r:Cube2.R, g:Cube2.G, b:Cube2.B, a:Cube2.A}'
    >>> names = "\n".join(line.split("[", 1)[0] for line in mess.split("\n"))
    >>> print names
    Cube1
    Ground
    Cube3
    Cube4
    Sphere
    OilTank
    Cube2