2016-02-05 374 views
0

我有一个我想要处理的表单(一个字符串)。表单可以包含某些事件,例如:>>1244使用Python查找某个关键字后的数字

我需要在每次出现>>后抓取每个数字,但我不知道如何。我在想正则表达式,但我很糟糕。我已经阅读了几个类似的问题,但答案是截然不同的,不适用于此(它们在关键字后面找到下一个WORD),或者有时使用矛盾的方法。

这样做的最好方法是什么?谢谢。

+0

你是什么意思?我不应该问问做什么最好的方法是什么? – Man

+0

它清楚地表明:“表单可以包含某些事件”,该句子告诉你1.“某些事件”,这意味着它们不必处于起始处,也可以用于复数形式,这意味着可以有多个2我在“1234”例子之前说“例如”,谁会认为它总是会是1234?你是认真的吗? – Man

+1

我收回了我的评论。我的错是没有仔细阅读。 downvote不是我的。 –

回答

3

可以使用findall()positive look behind

>>> import re 
>>> 
>>> s = ">>1244" 
>>> re.findall(r"(?<=>>)\d+", s) 
['1244'] 
>>> 
>>> s = ">>1244 something >>500" 
>>> re.findall(r"(?<=>>)\d+", s) 
['1244', '500'] 

这里(?<=>>)\d+表达式将匹配一个或多个数字(\d+)的>>后走了。

0

如果就这么简单到你只想找的>>单次数,并希望抓住这串之后的一切,你可以这样做:

mystring = "1234>>5678" 
after = mystring.split(">>")[1] 

这将字符串分割成一个列表在“>>”处,然后抓住列表的第二个元素,这将是“>>”之后的所有内容。

1

您可以使用正则表达式,请尝试:

s = ">>1244 aaa >>112 >>344>>456 aaa sss >>345 >>aa 567" 

import re 

result = re.findall(">>(\d+)",s) 

print result 

输出:

['1244', '112', '344', '456', '345'] 

记住的FindAll返回组的列表,如果有团体。您指示使用'('和')'分别启动和终止的组。

Look:https://docs.python.org/2/library/re.html

相关问题