在Python中分隔字符串

时间:2015-09-04 23:32:21

标签: python string

我有一个长度为几百个字符且包含

的字符串
str= "... a OUTPUT b ..."

其中ab是我需要的OUTPUT的开头和结尾。

现在,我想在该长字符串中搜索a部分,并在ab - OUTPUT之间复制内容(不具备一个固定数量的字符)到一个新的字符串,但我找不到这样做的方法。

为了使事情稍微复杂一点,a OUTPUT b部分将在该字符串中出现多次,所以我发现它应该只看第一次出现。然后,我将缩短字符串并重复该过程。

很少帮忙?

3 个答案:

答案 0 :(得分:0)

我建议使用正则表达式

import re

your_string = "1234aOUTPUTb5678"
output_pattern = ".*a(.*)b"

output_match = re.search(output_pattern,your_string)
output = output_match.group(1)

print output
>>>"OUTPUT"

您需要更换" a"和" b"虽然我不认为你会将它们用作标识符,但它们确实是真实的。

答案 1 :(得分:0)

由于我从@Twitchykid和@ TigerhawkT3获得的输入,我设法解决了这个问题:

import re

string_to_separate = "... a OUTPUT b ... a OUTPUT b ... a OUTPUT b ..."
string_pattern = ".*a (.*) b.*"
sep = "..."

separated_string = string_to_separate(sep)

for i in range(len(string_to_separate)):
    output_match = re.search(string_pattern, separated_string[i])
    if output.match: #if it exists
        output = output_match.group(1)
        print output

答案 2 :(得分:0)

正则表达式适用于此

import re

input_string = "a1234b cd a32b blah"
pattern = re.compile("a(.*?)b") #nongreedy so it matches only to the first b, not the last b.

output = pattern.findall(input_string) #this way, I can find all occurrences
print(output)

#['1234', '32']