我已经搜索了很多其他的帖子,虽然有一些有用的提示,但我还没有发现类似的问题,所以我想我会问。 我已生成以下列表:
data2 = ['AN1_OUT,24','AN2_OUT,13','AN3_OUT,14','AN4_OUT,15']
我想做的是确定设置(AN1\u OUT等)和伴随它的值(2,13等)。我已经成功地通过使用旧的'if elif'识别了这个设置,因为我只需要知道这个设置,但是,我现在需要分离出这个值。到目前为止,我使用的是:
data3 = re.findall('[0-9]{2}',data2[i])
byte1 = map(lambda n: int(n[:2]),data3)
这是一个for循环,该循环贯穿data2列表中的所有元素(本例中为4)。对于每一个“我”,我得到以下信息:
[24]
[13]
[14]
[15]
我知道这正是我所期望的,但是,当值是单个数字时,问题就出现了,例如:
'AN1_OUT,2'
在这种情况下,我错过了该值,它没有打印。我尝试将data3函数中的regex更改为:
data3 = re.findall('[0-9]{1,2}',data2[i])
但是,问题是它会在1\u OUT、2\u OUT等中提取数字。。所以我的结论是:
[1,2]
[2,13]
[3,14]
[4,15]
我已经研究了各种不同的方法来解决这个问题,但事实证明这是非常难以捉摸的。任何帮助都将不胜感激。你知道吗
在末尾附加
$
,使其仅与输入字符串的末尾匹配:您可以使用
\d
而不是[0-9]
:要避免转义,请使用原始字符串(
r'raw string'
):您可以使用look behind获取前面带有逗号的数字。另外,您可以使用
[0-9]+
而不是[0-9]{1,2}
,因为您可以有更多的数字。你知道吗您可以解析所描述的字符串,而不必使用正则表达式。就用逗号分开!你知道吗
相关问题 更多 >
编程相关推荐