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

时间:2014-12-04 02:40:02

标签: 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 '

我希望能够做的就是ID=我希望它之后的整数。并将它们附加到像这样的数组中 -

array = [56494759, 56494760, 56494761]

从那里我了解如何完成我需要做的其余事情(使用数组中的每个值来对数据库运行单独的查询)。

3 个答案:

答案 0 :(得分:1)

这样的事情:

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']

答案 1 :(得分:0)

myString = '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 '
array = [each.split('=')[1] for each in myString.split() if each.startswith('ID=')]
print array

结果:

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

答案 2 :(得分:0)

使用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(' ')), [])