python解析输出并返回一定的值

时间:2015-02-12 03:49:16

标签: python parsing

我的输出如下:

output = test:"<no-cjar> mxy 3044 jpg fasst_st

我想读取输出并仅存储'mxy'之后和'jpg'之前的值。该值始终为整数。

我使用了类似的东西:

value = re.findall(r"mxy \d+", output)

我认为会返回'mxy 3044'。如果这是最好的方法,我不太确定。因为我可能不得不再次拆分它。

这是对的吗?还有另一种方法可以做同样的事情。提前谢谢。

2 个答案:

答案 0 :(得分:1)

使用capturing group

value = re.findall(r"mxy\s*(.*?)\s*jpg", output)

\s*匹配零个或多个空格。或r"mxy\s*(\d+)\s*jpg"

示例:

>>> re.findall(r"mxy\s*(.*?)\s*jpg", 'test:"<no-cjar> mxy 3044 jpg fasst_st')
['3044']

答案 1 :(得分:0)

Alterantive方法,假设你的字符串的格式没有改变,即它有mxy后跟空格和4位数字。

output = "<no-cjar> mxy 3044 jpg fasst_st"
n = int(output.split('mxy')[1][0:6])
print(n) # gives 3044

做同样事情的方式不同,但没有正则表达式。