簡體   English   中英

在 Python 中組合多個函數

[英]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

現在我的問題。 我應該如何將所有這些函數組合到某個東西( functionclass )以設置這三個值(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM