提取定界符之间的所有字符串

Extract all strings between delimiters

我编写了一个函数来提取两个分隔符之间的字符串。但是在一些文件中,这些分隔符出现了好几次,所以我想把它们全部提取出来。 在我的实际函数中,它只提取它遇到的第一个,然后退出。

我该如何解决?

def extraction_error_CF(file): 

    f=open(file,'r')
    file=f.read()
    f.close()
    start = file.find('Error validating') #1st delimiter
    end = file.find('</SPAN><BR>', start) # 2nd delimiter
    if start!=-1 and end!=-1:             #If these two delimiters are present...
        return(file[start:end])
    else:
        return""

对于 HTML/XML 你应该完全使用像 BeautifulSoup 这样的健壮模块, 但是如果你真的只想要两个分隔符之间的内容,你可以使用相同的函数,但是将结果添加到列表中(例如)然后你可以打印出来

def extraction_error_CF(file): 

    f=open(file,'r')
    file=f.read()
    f.close()

    # Patterns
    first = "Error validating"
    second = "</span><br>"

    # For all the matches
    results = []

    # Iterate the whole file
    start = file.find(first)
    end = file.find(second)
    while start != -1 and end != -1:
        # Add everything between the patterns
        # but not including the patterns
        results.append(file[start+len(first):end])
        # Removing the text that already passed
        file = file[end+len(second):]

        start = file.find(first)
        end = file.find(second)

    # Return the content of the list as a string
    if len(results) != 0:
        return "".join(r for r in results)
    else:
        return None

print(extraction_error_CF("test"))
import re

def extraction_error_CF(file): # Get error from CF upload 
    f=open(file,'r')
    file=f.read()
    f.close()
    start = re.findall('Error validating(.*)</SPAN><BR>',file)
    if start != -1:
        return start
    else:
        return""

我就是这样做的,效果很好谢谢大家!