我目前使用此代码的工作:如何继续下一档的第一场比赛之后 - Python 3.x都有
from bs4 import BeautifulSoup
import glob
import os
import re
import contextlib
@contextlib.contextmanager
def stdout2file(fname):
import sys
f = open(fname, 'w')
sys.stdout = f
yield
sys.stdout = sys.__stdout__
f.close()
def trade_spider():
os.chdir(r"C:\Independent Auditors Report")
with stdout2file("auditfeesexpenses.txt"):
for file in glob.iglob('**/*.html', recursive=True):
with open(file, encoding="utf8") as f:
contents = f.read()
soup = BeautifulSoup(contents, "html.parser")
for item in soup.findAll("ix:nonfraction"):
if re.match(".*AuditFeesExpenses", item['name']):
print(file.split(os.path.sep)[-1], end="| ")
print(item['name'], end="| ")
print(item.get_text())
trade_spider()
它所做的是: - 打开文本文件 - 搜寻所有。在HTML文件中指定目录 - 如果正则表达式匹配 - >打印结果到指定的文本文件
在每个HTML文件中有多达两个字符串包含我的正则表达式。这意味着有时我有两个结果为每个文件。现在我想要做的是告诉Python它应该自动将继续继续到下一个文件IF RegEx找到了一个匹配(没有匹配是好的,因为python已经自动进入下一个文件if它找不到匹配项)。
所以我的成绩应该要么不匹配(如果是什么罚款)或一场比赛,然后比继续下一文件,而无需第二个字符串与我的正则表达式匹配。
可你们谁帮我在这?有没有简短而优雅的魔法可以插入到我的代码中,而不会变得太多?
任何帮助表示赞赏!
P.S.我已经通过stackflow进行了搜索,因为匹配问题是一个非常受欢迎的问题,但是我找不到任何与我的问题相匹配的问题。如果我错过了关于此主题的一些相关问题,对此抱歉,如果您可以发布相关链接,我将不胜感激。
谢谢!没想到它可能如此简单。它完美的作品。感谢你的帮助! –