Python 从列表中拆分和提取特定项

Python 从列表中拆分和提取特定项,python,python-2.7,Python,Python 2.7,嗨,我是这方面的新手,任何帮助都将提前感谢 我正在Windows8操作系统中使用PythonV2.7。 现在我有一个清单: data = ['testmode on \r', 'getdigitalsensors \r', '\x1aDigital Sensor Name, Value\r', 'SNSR_DC_JACK_IS_IN,0\r', 'SNSR_DUSTBIN_IS_IN,1\r', 'SNSR_LEFT_WHEEL_EXTENDED,0\r', 'SNSR_RIGHT_WHE

嗨,我是这方面的新手,任何帮助都将提前感谢

我正在Windows8操作系统中使用PythonV2.7。 现在我有一个清单:

data = ['testmode on  \r', 'getdigitalsensors \r', '\x1aDigital Sensor Name, Value\r', 
'SNSR_DC_JACK_IS_IN,0\r', 'SNSR_DUSTBIN_IS_IN,1\r', 'SNSR_LEFT_WHEEL_EXTENDED,0\r', 
'SNSR_RIGHT_WHEEL_EXTENDED,0\r', **'LSIDEBIT,0\r', 'LFRONTBIT,0\r'**,
'LLDSBIT,0\r', **'RSIDEBIT,0\r', 'RFRONTBIT,0\r'**, 'RLDSBIT,0']
问题:

  • 如何从列表['LSIDEBIT,0\r','LFRONTBIT,0\r','RSIDEBIT,0\r','RFRONTBIT,0\r',]中拆分/提取这4项(粗体)

  • 如何拆分/提取上述四项后的位(0)?输出如下所示:

    0
    0
    0
    0   
    
  • 这将有助于:

    selected = [data[index] for index in [7, 8, 10, 11]]
    res = [int(x.strip().split(',')[-1]) for x in selected]
    
    如果您事先不知道索引,但知道字符串的第一部分,您可以这样做:

    targets = ['LSIDEBIT', 'LFRONTBIT','RSIDEBIT', 'RFRONTBIT']
    selected = []
    for item in data:
        for target in targets:
            if item.startswith(target):
                selected.append(item)
    res = [int(x.strip().split(',')[-1]) for x in selected]
    
    res
    保持:

    [0, 0, 0, 0]
    
    这个怎么样:

    l = ['testmode on \r', 'getdigitalsensors \r', '\x1aDigital Sensor Name, Value\r', 'SNSR_DC_JACK_IS_IN,0\r', 'SNSR_DUSTBIN_IS_IN,1\r', 'SNSR_LEFT_WHEEL_EXTENDED,0\r', 'SNSR_RIGHT_WHEEL_EXTENDED,0\r', 'LSIDEBIT,0\r', 'LFRONTBIT,0\r', 'LLDSBIT,0\r', 'RSIDEBIT,0\r', 'RFRONTBIT,0\r', 'RLDSBIT,0']
    
    for i in map(l.__getitem__,[7,8,10,11]):
            print [int(s) for s in i.split(',')[1] if s.isdigit()]
    
    输出:

    [0]
    [0]
    [0]
    [0]
    

    可以使用正则表达式组提取位:

    import re
    toextract = ['LSIDEBIT', 'LFRONTBIT','RSIDEBIT', 'RFRONTBIT']
    for exitm in toextract:
        for itm in data:
            if itm.startswith(exitm):
                bitre = re.search(exitm+r',(\d)', itm)
                if bitre is not None:
                    print bitre.group(1)
                    break
    

    嗨,迈克,谢谢你的及时回复。你提供的方式是一个好的和简单的方式。抱歉,我没有说清楚,列表可能会更改(可能会添加一些新项目),因此我恐怕无法通过索引7、8、10、11查找到它们。添加了第二个版本。它涵盖了你想要的案例吗?新版本看起来更好。我在你的答案末尾添加了“打印项目”,嗯……没有看到任何输出……我必须弄错……结果是列表。我现在将其存储在
    res
    中。
    res=[int(x.strip().split(',')[-1]),用于选定的x中。
    请参见答案。对于问题1,您需要提取的项目是否会在列表中提供给您(如您的示例中)?嗯……这是一个好问题,不需要列表。第二个问题是关键~;-)Thx Letsc,这是个好主意。但是,我恐怕无法通过索引跟踪这四个项目,因为列表可能会更改,(例如,添加或删除某些项目…@letscum…)错误:在bitre=re.search(exitem+r',(\d',itm)中,name错误:name'exitem'未定义great,请给出我想要的确切输出,投你的票。吨thx!=)你能帮我弄清楚吗?