嗨,我是这个领域的新手,任何帮助都会提前得到赞赏。
我在Windows 8操作系统中使用Python v2.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']
问题:
如何从列表中分割/提取这4个项目(粗体)['LSIDEBIT,0 \ r','LFRONTBIT,0 \ r','RSIDEBIT,0 \ r','RFRONTBIT,0 \ R']
如何在上述四项之后拆分/提取位(0)?输出如下:
0
0
0
0
答案 0 :(得分:1)
这样可行:
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]
答案 1 :(得分:1)
您可以使用正则表达式组来提取位:
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
答案 2 :(得分: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]