如何获取字符串中某个子字符串之前和之前的所有内容?

时间:2017-11-16 02:09:29

标签: python string python-3.x

如何将字符串返回到某个字符?

def get_header(s):
    '''(str) -> str
    Return the start of the given string upto and including
    </head>.'''
    return (s.split('</head>')[0])

这就是我所做的,但是,我不知道如何在“”&lt;“/ heads”&gt;“”之前得到所有内容并将其包括在内。

例如:

s ="hello python world </head> , i'm a beginner "
get_header(s)

这将返回

"hello python world "<"/head">"   #without the quotient marks around the <

3 个答案:

答案 0 :(得分:1)

您的代码应该有效,但不会包含"</head>",所以只需在最后添加:

def get_header(s):
    '''(str) -> str
    Return the start of the given string upto and including
    </head>.'''
    return s.split('</head>')[0] + "</head>"

答案 1 :(得分:0)

对于与{&#34;正则表达式匹配的Python re模块,这将是一件相当容易的事情。 (或正则表达式)到字符串。

以下是如何使用它来做你想做的事情:

import re

def get_header(s):
    """(str) -> str
    Return the start of the given string upto and including </head>.
    """
    matches = re.search(r".*</head>", s)
    return matches.group(0) if matches else None

s = "hello python world </head> , i'm a beginner "
print(get_header(s))  # -> hello python world </head>

答案 2 :(得分:0)

more_itertools是实施split_after工具的第三方库。通过以下方式安装:

> pip install more_itertools

<强>鉴于

import more_itertools as mit


s = "hello python world </head> , i'm a beginner "

<强>代码

pred = lambda x: x == "</head>"
" ".join(next(mit.split_after(s.split(), pred)))
# 'hello python world </head>'

字符串由空格分成&#34;单词&#34;。在适合谓词的任何单词之后拆分完整字符串。第一个结果是连在一起的。