获取两个字符串中的子字符串

时间:2016-04-12 16:01:39

标签: python regex string python-2.7 truncate

我有一个非常大的字符串,其中包含来自某个系统的日志
我只想要以<status>开头且以</status>结尾的部分 我听说RegEx表达是一种很好的方式,但我真的不知道如何使用它 有什么想法吗?

3 个答案:

答案 0 :(得分:3)

s = "Hello I am a very long string <status>I've got a lovely bunch of coconuts</status> here they are standing in a row"
excerpt = s.partition("<status>")[2].rpartition("</status>")[0]
print excerpt

结果:

I've got a lovely bunch of coconuts

答案 1 :(得分:1)

如果您想尝试正则表达式,可以采取以下方式:

import re

regex = re.compile(r"\<status\>(.*?)\</status\>", re.IGNORECASE)
s = """This is some long random text <status>This is the first status block</status> 
and some more text <status>and another block</status> 
and yet more <status>This is the last status block</status>"""
print(re.findall(regex, s))

产量

['This is the first status block', 'and another block', 'This is the last status block']

Demo

这种方法的主要优点是它可以在一行上提取所有 <status>...</status>块,而不仅仅是第一个。请注意,对于三引号字符串,<status></status>都需要位于同一行。

答案 2 :(得分:0)

如果<status></status>只出现一次,那么您可以使用string_name[string_name.index("<status>") + 8: string_name.index("</status>"]

s = "test<status>test2</status>"
print s[s.index("<status>") + 8: s.index("</status>"]

输出:

test2