Python 从列表中拆分和提取特定项
嗨,我是这方面的新手,任何帮助都将提前感谢 我正在Windows8操作系统中使用PythonV2.7。 现在我有一个清单: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
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']
问题:
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!=)你能帮我弄清楚吗?