是否有一个.endswith可以打开后缀在(“.html?”)之后有变化的文件(例如通过“.html?p=1209401”、“.html?p=92030”等)

2024-06-16 14:42:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个html解析器,它将获取文件夹及其子文件夹中的所有html和htm文件,取出所有html标记并导出CSV和TXT文件。我有一个包含子文件夹的文件夹,其中有许多文件以“.html?p=39200”或“index.html?replytocom=5467”结尾

我想告诉Python打开所有带有“.html?”+*(包括之后的任何变体)的文件,而不仅仅是“.html”文件

我试过google,查看文档,还有堆栈溢出,但是找不到解决这个问题的方法。到目前为止,我的代码是:

with os.scandir(directory) as it:
    for entry in it:
        if entry.name.endswith(".html") or entry.name.endswith("htm"):

免责声明:我是初学者


Tags: 文件csvname标记txt文件夹解析器index
3条回答

也使用正则表达式

import re
with os.scandir(directory) as it:
    for entry in it:
        if re.match(r'.*?(?:\.html?$|\.html?\?.*)', entry.name) is not None:

您可以使用^{}获取问号前面的部分(如果不包含问号,则获取整个文件名),并使用该部分与“.html”和“htm”匹配:

with os.scandir(directory) as it:
    for entry in it:
        name = entry.name.split('?')[0]
        if name.endswith(".html") or name.endswith("htm"):
            print(entry.name)

您可以检查字符串".html"是否出现在文件名中的任何位置,而不仅仅出现在末尾:

with os.scandir(directory) as it:
    for entry in it:
        if ".html" in entry.name:

相关问题 更多 >