Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何正确捕获两个模式之间的多行_Python_Regex_Html Parsing - Fatal编程技术网

Python 如何正确捕获两个模式之间的多行

Python 如何正确捕获两个模式之间的多行,python,regex,html-parsing,Python,Regex,Html Parsing,我有一个html文件,我试图搜索其中的一个模式,当我找到它时,打印出设置模式之间的所有行。在我的例子中,“pre和/pre”之间的所有内容都包含一个阀杆环序列。我的目标是对大量的html文件进行排序,拉出这些结构并将它们放在一个列表中,可以像html文件中显示的那样打印出来。我很难正确地捕捉所有的线条,并正确地打印它们,因为它会出现在图片中。目前我只打印了两行,pre-cugcaggaagagugguggcugaca/pre和 预CCUCACCCCUUCUGCCUGCA/pre 为什么它不能捕获

我有一个html文件,我试图搜索其中的一个模式,当我找到它时,打印出设置模式之间的所有行。在我的例子中,“pre和/pre”之间的所有内容都包含一个阀杆环序列。我的目标是对大量的html文件进行排序,拉出这些结构并将它们放在一个列表中,可以像html文件中显示的那样打印出来。我很难正确地捕捉所有的线条,并正确地打印它们,因为它会出现在图片中。目前我只打印了两行,pre-cugcaggaagagugguggcugaca/pre和 预CCUCACCCCUUCUGCCUGCA/pre

为什么它不能捕获图案中的所有内容并进行适当的打印?它跳过了span和span类。。我不确定我是否正确处理了这个问题——有没有更好的方法来思考这个问题?多谢各位

fh_html = open("filename").readlines()
for line in fh_html:

    match_obj = re.search(r'<pre>.*</pre>', line, re.DOTALL)
    print(match_obj.group(0))
text = open("filename").read()
match_obj = re.search(r'<pre>.*</pre>', text, re.DOTALL)
print(match_obj.group(0))
fh_html=open(“filename”).readlines()
对于fh_html中的行:
match_obj=re.search(r'.*',行,re.DOTALL)
打印(匹配对象组(0))
这是页面上html代码的外观: \这是代码的样子:

ggggc u-c ca agag
cugcaggcaag ggg uga gggc g
||||||||||||| ||| | |||  ||||     
GACGUCUCUCUCUCUCC ccc acu cccg g
------c cc cguu

这是代码:

您将把每一行单独传递给正则表达式,而不是整个文本

试试这个:

text=open(“文件名”).read()
match_obj=re.search(r'.*',text,re.DOTALL)
打印(匹配对象组(0))

在本例中,我之前没有包含代码行,但我需要执行几个操作,这些操作要求我在for循环中逐行遍历文件。如何在不阅读全文的情况下捕获这些多行?我想我需要存储每一行,然后在打印出来时把它们全部加起来?此外,当我这样做时,它不会在第一次出现/pre时停止,而是在html文件的其余部分继续,打印许多行。默认情况下,正则表达式是贪婪的,这意味着它们选择匹配尽可能长的模式。如果您多次出现<代码> <代码>和<代码> <代码>,它将匹配从第一个“代码> <代码>到最后一个<代码> <代码>的所有内容,并将中间的所有处理简单地作为<代码> *>代码>模式的一部分。
text = open("filename").read()
match_obj = re.search(r'<pre>.*</pre>', text, re.DOTALL)
print(match_obj.group(0))