Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.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正则表达式到findall行包含特定类型的文件名_Python_Regex_Findall - Fatal编程技术网

Python正则表达式到findall行包含特定类型的文件名

Python正则表达式到findall行包含特定类型的文件名,python,regex,findall,Python,Regex,Findall,我有一个文本文件。仅当文件名为.doc或.pdf类型的文件时,我希望获取包含文件名的行 比如说, <TR><TD ALIGN="RIGHT">4.</TD> <TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50%><a href="ABC.pdf"> On Complex Analytic Manifolds</a></TD> <TD ALIGN="LEFT" VALIGN="TOP

我有一个文本文件。仅当文件名为.doc或.pdf类型的文件时,我希望获取包含文件名的行

比如说,

<TR><TD ALIGN="RIGHT">4.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50%><a href="ABC.pdf"> On Complex Analytic Manifolds</a></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=72>L. Sam</TD>
</TR>
<TR><TD ALIGN="RIGHT">5.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50%><a href="DEF.doc"> On the Geometric theory of Fields</a>*</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=72>G.K. Ram</TD>
</TR>
任何人都可以告诉我在re.findall()中定义模式的任何可伸缩方式吗?

类似这样的内容:

>>> strs="""<TR><TD ALIGN="RIGHT">4.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50%><a href="ABC.pdf"> On Complex Analytic Manifolds</a></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=72>L. Sam</TD>
</TR>
<TR><TD ALIGN="RIGHT">5.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50%><a href="DEF.doc"> On the Geometric theory of Fields</a>*</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=72>G.K. Ram</TD>
</TR>"""

>>> [x for x in strs.splitlines() if re.search(r"[a-zA-Z0-9]+\.(pdf|doc)",x)]
['<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50%><a href="ABC.pdf"> On Complex Analytic Manifolds</a></TD>',
 '<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50%><a href="DEF.doc"> On the Geometric theory of Fields</a>*</TD>'
]
>strs=“”4。
L.萨姆
5.
*
G.K.Ram
"""
>>>[x代表标准分割线中的x(),如果重新搜索(r“[a-zA-Z0-9]+\(pdf文档)”,x)]
['',
'*'
]
类似这样的内容:

>>> strs="""<TR><TD ALIGN="RIGHT">4.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50%><a href="ABC.pdf"> On Complex Analytic Manifolds</a></TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=72>L. Sam</TD>
</TR>
<TR><TD ALIGN="RIGHT">5.</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50%><a href="DEF.doc"> On the Geometric theory of Fields</a>*</TD>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=72>G.K. Ram</TD>
</TR>"""

>>> [x for x in strs.splitlines() if re.search(r"[a-zA-Z0-9]+\.(pdf|doc)",x)]
['<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50%><a href="ABC.pdf"> On Complex Analytic Manifolds</a></TD>',
 '<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=50%><a href="DEF.doc"> On the Geometric theory of Fields</a>*</TD>'
]
>strs=“”4。
L.萨姆
5.
*
G.K.Ram
"""
>>>[x代表标准分割线中的x(),如果重新搜索(r“[a-zA-Z0-9]+\(pdf文档)”,x)]
['',
'*'
]

您可以使用此正则表达式:

(.*?<a\shref=[\"']\w+(?:\.doc|\.pdf)[\"']>.*)
(*)?
…L.山姆
... 
5.
... *
…G.K.拉姆
... """
>>>关于findall(“(*?”,“*”)

您可以使用此正则表达式:

(.*?<a\shref=[\"']\w+(?:\.doc|\.pdf)[\"']>.*)
(*)?
…L.山姆
... 
5.
... *
…G.K.拉姆
... """
>>>关于findall(“(*?”,“*”)

您可以同时使用
BeautifulSoup
re

import BeautifulSoup
import re

lines = soup.findAll('href', text = re.compile('your regex here'), attrs = {'class' : 'text'})

在html代码中使用
class
您的上级标题。

您可以同时使用
BeautifulSoup
re

import BeautifulSoup
import re

lines = soup.findAll('href', text = re.compile('your regex here'), attrs = {'class' : 'text'})

在html代码中使用
class
你的上级标题。

href=“.+?\(doc | pdf)
它只返回['pdf',doc']。。但我需要整行内容。
search
,而不是
findall
法定警告:。(不过,这个简单的例子不应该有问题。)您是否建议循环搜索每一行并搜索其中的每一行???findall实际上是以一种有效的方式进行的,只要我们提供了正确的模式…比如
href=“.+?\(doc | pdf)
它的返回['pdf',doc']只是……但我需要整行……用
search
试试,而不是
findall
法定警告:。(不过,这个简单的例子不应该有问题。)你是不是建议我们在这些行中循环并搜索它们中的每一行???findall实际上是以一种有效的方式进行的,只要我们给它提供了正确的模式…实际上我不想使用字符串函数…我只需要使用正则表达式…实际上我不想使用字符串函数…我只需要使用正则表达式…但我不需要我把整条线…从到但是我需要整条线…从到