объединить несколько функций в Python - PullRequest
0 голосов
/ 10 марта 2020

Я делаю разбор 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 с форматом {'rss-name':'rss-link'} и две цели (t,t2)

Теперь мой вопрос. Как мне объединить все эти функции с чем-то (function или, может быть, class), чтобы установить эти три значения (rss_dict, t, t2) и т. д. что мой код запускается сразу?

1 Ответ

1 голос
/ 10 марта 2020

Вы можете использовать класс со всеми этими функциями, включенными в него следующим образом:

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] 

Вы должны передать параметры, создав объект класса, и функции должны быть вызваны с использованием созданного объекта для их запустить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...