如何在具有不同模式的字符串中使用re.findall?

时间:2014-05-04 12:42:16

标签: python regex string

我有这个XML:

<O X="2424" C="22" Y="37" P="0" /><O P="0" C="22" Y="29" X="2375" /><O P="0" C="22" Y="100" X="2306" /><O P="0" C="22" Y="105" X="2606" /><O P="0" C="22" Y="50" X="2479" /><O P="0" C="22" Y="36" X="2738" /><O P="0" C="22" Y="38" X="2876" /><O P="0" C="22" Y="304" X="2370" /><O P="0" C="22" Y="304" X="2469" /><O P="0" C="22" Y="373" X="2422" /><O P="0" C="22" Y="449" X="2420" /><O P="0" C="22" Y="560" X="2444" /><O P="0" C="22" Y="580" X="2274" /><O P="0" C="22" Y="649" X="551" /><O P="0" C="22" Y="648" X="866" /><O P="0" C="22" Y="651" X="1276" /><O P="0" C="22" Y="518" X="120" /><O P="0" C="22" Y="476" X="418" /><O P="0" C="22" Y="518" X="140" /><O P="0" C="22" Y="533" X="120" /><O P="0" C="22" Y="533" X="140" /><O P="0" C="22" Y="411" X="603" /><O P="0" C="22" Y="650" X="1900" /><O P="0" C="22" Y="450" X="1615" /><O P="0" C="22" Y="416" X="2080" /><O P="0" C="22" Y="220" X="2533" /><O P="0" C="22" Y="62" X="1941" /><O P="0" C="22" Y="456" X="648" /><O P="0" C="22" Y="486" X="388" /><O P="0" C="22" Y="467" X="442" /><O P="0" C="22" Y="355" X="960" />

我需要获取所有X和Y中的数字,我尝试了re.findall,但模式在XML中发生了变化。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

你可以这样做:

s = '<O X="2424" C="22" Y="37" P="0" /><O P="0" C="22" Y="29" X="2375" /><O P="0" C="22" Y="100" X="2306" /><O P="0" C="22" Y="105" X="2606" /><O P="0" C="22" Y="50" X="2479" /><O P="0" C="22" Y="36" X="2738" /><O P="0" C="22" Y="38" X="2876" /><O P="0" C="22" Y="304" X="2370" /><O P="0" C="22" Y="304" X="2469" /><O P="0" C="22" Y="373" X="2422" /><O P="0" C="22" Y="449" X="2420" /><O P="0" C="22" Y="560" X="2444" /><O P="0" C="22" Y="580" X="2274" /><O P="0" C="22" Y="649" X="551" /><O P="0" C="22" Y="648" X="866" /><O P="0" C="22" Y="651" X="1276" /><O P="0" C="22" Y="518" X="120" /><O P="0" C="22" Y="476" X="418" /><O P="0" C="22" Y="518" X="140" /><O P="0" C="22" Y="533" X="120" /><O P="0" C="22" Y="533" X="140" /><O P="0" C="22" Y="411" X="603" /><O P="0" C="22" Y="650" X="1900" /><O P="0" C="22" Y="450" X="1615" /><O P="0" C="22" Y="416" X="2080" /><O P="0" C="22" Y="220" X="2533" /><O P="0" C="22" Y="62" X="1941" /><O P="0" C="22" Y="456" X="648" /><O P="0" C="22" Y="486" X="388" /><O P="0" C="22" Y="467" X="442" /><O P="0" C="22" Y="355" X="960" />'

import re

x = re.findall(r'X=\"(\d+)\"', s)

y = re.findall(r'Y=\"(\d+)\"', s)

然后,如果需要,可以将数字字符串转换为整数:

x = map(int, x)
y = map(int, y)