字符串中每个匹配项的python复制到数组

字符串中每个匹配项的python复制到数组,python,python-2.7,Python,Python 2.7,我正在对一个数据库进行一些查询,该数据库将返回如下内容- string = 'T=1 ID=56494759 DID=583887 O=N M=N J=76732 R=0 P=1 S=101 WR=N T=1 ID=56494760 DID=418400 O=N M=N J=48064 R=14780471 P=1 S=101 WR=N T=1 ID=56494761 DID=583889 O=N M=N J=76733 R=0 P=1 S=101 WR=N ' 我希望能够做到的是,无论它在哪

我正在对一个数据库进行一些查询,该数据库将返回如下内容-

string = 'T=1 ID=56494759 DID=583887 O=N M=N J=76732 R=0 P=1 S=101 WR=N T=1 ID=56494760 DID=418400 O=N M=N J=48064 R=14780471 P=1 S=101 WR=N T=1 ID=56494761 DID=583889 O=N M=N J=76733 R=0 P=1 S=101 WR=N '
我希望能够做到的是,无论它在哪里显示
ID=
我都希望后面有一个整数。并将它们附加到一个数组中,如下所示-

array = [56494759, 56494760, 56494761]
从这里,我了解了如何完成我需要做的其余工作(使用数组中的每个值对数据库运行单独的查询)。

类似这样的事情:

string = 'T=1 ID=56494759 DID=583887 O=N M=N J=76732 R=0 P=1 S=101 WR=N T=1 ID=56494760 DID=418400 O=N M=N J=48064 R=14780471 P=1 S=101 WR=N T=1 ID=56494761 DID=583889 O=N M=N J=76733 R=0 P=1 S=101 WR=N '


import re

print(re.findall(r'\sID=(\d+)', string))
结果:

['56494759', '56494760', '56494761']
结果:

['56494759', '56494760', '56494761']

一个使用
map

filter(None, map(lambda x: None if x[0]!='ID' else x[1], map(lambda y: y.split('='), string.split())))
或者使用
reduce
,这可能更清楚一些:

reduce(lambda ids, x: ids + [x[1]] if x[0]=='ID' else ids, map(lambda x: x.split('='), string.split(' ')), [])

在这里可能会有帮助。有什么办法不让DID在这方面发挥作用吗?也许是r'ID='?谢谢!实际上,奇怪也似乎DB在ID之前有一个隐藏字符,所以我实际上必须这样做-r'xID=(\d+)'x是一个SOH字符。对unicode是隐藏的,但对程序来说,它使用它作为某种字符中断。@whoisearth无需担心。所以我想,你觉得它对你有用吗?
reduce(lambda ids, x: ids + [x[1]] if x[0]=='ID' else ids, map(lambda x: x.split('='), string.split(' ')), [])