[英]combine several functions in Python
我做RSS解析並從新聞標題中獲取新聞
def print_headlines_test(rss_dict):
for key,url in rss_dict.items():
feed = feedparser.parse(url)
headlines = []
allheadlines = []
for newsitem in feed['items']:
headlines.append(newsitem['title'])
for key,url in rss_dict.items():
allheadlines.extend(headlines)
然后我將其保存到 csv 並讀取 df:
def write_and_read():
header = ['Tittle' , 'Desc']
with open('news.csv', 'w', encoding='utf-8-sig') as csvfile:
writer.writerow(i for i in header)
for a in zip(allheadlines):
writer.writerow((a))
df = pd.read_csv('news.csv')
然后我按某些目標搜索新聞(t & t2):
t = 'word1|word2|word3'
t2 = 'word3|word4|word5'
並制作此數據框:
def certain_words(t, t2):
result = df.apply(lambda x: x.str.contains(t, na=False,
flags = re.IGNORECASE, regex=True)).any(axis=1)
result2 = df.apply(lambda x: x.str.contains(t2, na=False,
flags = re.IGNORECASE, regex=True)).any(axis=1)
df[result&result2]
所以,我的輸入值是rss_dict
(格式為{'rss-name':'rss-link'}
的 rss 字典和兩個目標( t,t2
)
現在我的問題。 我應該如何將所有這些函數組合到某個東西( function
或class
)以設置這三個值(rss_dict, t, t2)
並讓我的代碼立即運行?
您可以使用包含所有這些功能的類,如下所示:
class News:
def __init__(self,rss_dict,t, t2):
rss_dict=self.rss_dict
t=self.t
t2=self.t2
def print_headlines_test(self):
for key,url in self.rss_dict.items():
feed = feedparser.parse(url)
headlines = []
allheadlines = []
for newsitem in feed['items']:
headlines.append(newsitem['title'])
for key,url in self.rss_dict.items():
allheadlines.extend(headlines)
self.allheadlines=allheadlines
def write_and_read(self):
header = ['Tittle' , 'Desc']
with open('news.csv', 'w', encoding='utf-8-sig') as csvfile:
writer.writerow(i for i in header)
for a in zip(self.allheadlines):
writer.writerow((a))
df = pd.read_csv('news.csv')
def certain_words(self):
result = df.apply(lambda x: x.str.contains(self.t, na=False,
flags = re.IGNORECASE, regex=True)).any(axis=1)
result2 = df.apply(lambda x: x.str.contains(self.t2, na=False,
flags = re.IGNORECASE, regex=True)).any(axis=1)
df[result&result2]
您應該通過創建類的對象來傳遞參數,並且必須使用創建的對象來調用函數才能運行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.