我目前使用此代碼的工作:如何繼續下一檔的第一場比賽之後 - 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進行了搜索,因爲匹配問題是一個非常受歡迎的問題,但是我找不到任何與我的問題相匹配的問題。如果我錯過了關於此主題的一些相關問題,對此抱歉,如果您可以發佈相關鏈接,我將不勝感激。
謝謝!沒想到它可能如此簡單。它完美的作品。感謝你的幫助! –