溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

基于Python如何實(shí)現(xiàn)西西成語(yǔ)接龍

發(fā)布時(shí)間:2022-08-05 09:51:08 來(lái)源:億速云 閱讀:175 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇“基于Python如何實(shí)現(xiàn)西西成語(yǔ)接龍”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來(lái)看看這篇“基于Python如何實(shí)現(xiàn)西西成語(yǔ)接龍”文章吧。

爬蟲(chóng)模塊

首先展示下我們最終獲得的成語(yǔ)的數(shù)據(jù):

,成語(yǔ),拼音,成語(yǔ)解釋,典故出處,近義詞,反義詞,常用程度,感情色彩,語(yǔ)法用法,成語(yǔ)結(jié)構(gòu),產(chǎn)生年代,英文翻譯,成語(yǔ)謎面
0,阿匼取容,ē ǎn qǔ róng,阿匼:一味迎合的樣子。一味巴結(jié)別人以求得他們的喜歡,《新唐書(shū) 楊再思傳》:“居宰相十余年,阿匼取容,無(wú)所薦達(dá)。”,阿諛取容,剛正不阿,生僻,貶義詞,作謂語(yǔ)、定語(yǔ);用于人,聯(lián)合式,古代,,
1,阿姑阿翁,ā gū ā wēng,阿:名詞的前綴。姑:丈夫的母親。翁:丈夫的父親。指公公婆婆。,見(jiàn):“阿家阿翁”。,阿家阿翁,,一般,褒義詞,作主語(yǔ)、賓語(yǔ);指公公婆婆,聯(lián)合式,近代,father-in-law and mother-in-law,
2,阿嬌金屋,ā jiāo jīn wū,阿嬌:指漢武帝劉徹的姑母(長(zhǎng)公主劉嬌)的女兒。原指漢武帝劉徹要用金屋接納阿嬌為婦。這里泛指美麗高貴的女子。,語(yǔ)出舊題漢·班固《漢武故事》:漢武帝幼時(shí)曾對(duì)姑母長(zhǎng)公主說(shuō):“若得阿嬌(姑母之女)作婦,當(dāng)以金屋貯之?!?金屋藏嬌,,一般,褒義詞,作賓語(yǔ)、定語(yǔ);多用于女性,偏正式,古代,,
3,阿家阿翁,ā jiā ā wēng,阿:名詞的前綴。家:通“姑”,丈夫的母親。翁:丈夫的父親。指公公婆婆。,唐·趙璘《因話錄》卷一:“郭暖嘗與升平公主琴瑟不調(diào)。尚父拘暖,自詣朝童結(jié)罪。上召而慰之曰:‘諺云:不癡不聾,不作阿家阿翁。'”,阿公阿婆,,一般,褒義詞,作主語(yǔ)、賓語(yǔ);指公公婆婆,聯(lián)合式,古代,husband's father and mother,
4,阿平絕倒,ā  píng  jué  dǎo,以之比喻對(duì)對(duì)方的言論極為佩服。亦用為譏諷言論極為乖謬,常貽笑大方。,據(jù)《晉書(shū)·衛(wèi)玠傳》及《王澄傳》載:玠好言玄理?,槴e王澄字平子,兄昵稱(chēng)之曰:“阿平”。有高名,少所推許,每聞玠言,輒嘆息絕倒。故時(shí)為之語(yǔ)曰:“衛(wèi)玠談道,平子絕倒?!?,,一般,,,,,,
5,阿斗太子,ā dǒu tài zǐ,阿斗:三國(guó)蜀漢劉備之子劉禪的小名。此人庸碌無(wú)能,雖有諸葛亮等人全力扶助,也不能振興蜀漢。指懦弱無(wú)能的人,高陽(yáng)《胡雪巖全傳 燈火樓臺(tái)》:“丈夫是個(gè)阿斗太子,哪怕你是諸葛亮,也只好嘆口氣。”,扶不起的阿斗,,常用,貶義詞,作主語(yǔ)、賓語(yǔ)、定語(yǔ);多用于比喻句,偏正式,現(xiàn)代,an ignorant and incapable man <good-for-nothing fellow>,劉禪

每條成語(yǔ)包含以下屬性:成語(yǔ),拼音,成語(yǔ)解釋,典故出處,近義詞,反義詞,常用程度,感情色彩,語(yǔ)法用法,成語(yǔ)結(jié)構(gòu),產(chǎn)生年代,英文翻譯,成語(yǔ)謎面。具體獲取成語(yǔ)的方式在spider,py里面,直接運(yùn)行parse_url3_detail()即可得到以上數(shù)據(jù)。這里我們?nèi)タ匆幌戮W(wǎng)頁(yè):

基于Python如何實(shí)現(xiàn)西西成語(yǔ)接龍

我們要先獲取每一頁(yè)的初始信息,在get_all_chengyu3()里面注釋的部分就是,在得到之后已經(jīng)將其存儲(chǔ)下來(lái)了,接著隨便點(diǎn)擊一個(gè)成語(yǔ),進(jìn)入到具體的詳情頁(yè):

基于Python如何實(shí)現(xiàn)西西成語(yǔ)接龍

會(huì)發(fā)現(xiàn)所有的信息都在帶有class屬性為view_con clearfix的div下,我們可以通過(guò)BeautifulSoup的find函數(shù)找到這些標(biāo)簽,比如:div = soup.find("div", {"class":"view_con clearfix"}),然后再進(jìn)一步獲取該標(biāo)簽下的一些數(shù)據(jù):

dl = div.find("dl")
dts = dl.find_all("dt")
dds = dl.find_all("dd")
for dt,dd in zip(dts, dds):
    cate = dt.text.replace('[', '')
    cate = cate.replace(']', '')
    cate = cate.strip()
    content = dd.text
    content = content.strip()

我們可以通過(guò).text來(lái)獲取標(biāo)簽包裹的文本,比如

作謂語(yǔ)、定語(yǔ);用于人

可以得到作謂語(yǔ)、定語(yǔ);用于人。

前綴樹(shù)搜索提示

代碼位于trie.py里面。前綴樹(shù)的構(gòu)建很簡(jiǎn)單,我們從頭遍歷每一個(gè)成語(yǔ),分別將成語(yǔ)存儲(chǔ)到每一個(gè)比字或詞當(dāng)中,在搜索的時(shí)候以該字或詞為鍵,直接得到值即可:

# coding:utf-8
"""
利用前綴樹(shù)進(jìn)行搜索提示
"""


class TrieTree(object):

    def __init__(self):
        self.dict_trie = dict()

    def add_node(self, word):
        word = word.strip()
        tree = self.dict_trie
        for i in range(1, len(word)+1):
            char = word[:i]
            if char not in tree:
                tree[char] = [word]
            else:
                tree[char].append(word)


    def build_trie_tree(self, cy_list):
        """ 創(chuàng)建 trie 樹(shù) """
        for word in cy_list:
            self.add_node(word)

    def search(self, word):
        """ 搜索給定 word 字符串中與詞典匹配的 entity,
        返回值 None 代表字符串中沒(méi)有要找的實(shí)體,
        如果返回字符串,則該字符串就是所要找的詞匯的類(lèi)型
        """
        tree = self.dict_trie
        res = tree.get(word, None)
        return res


if __name__ == '__main__':
    import pandas as pd
    from pprint import pprint
    trie = TrieTree()
    data = pd.read_csv("data/cycd.csv")
    cys = data["成語(yǔ)"].values.tolist()
    trie.build_trie_tree(cys)
    # pprint(trie.dict_trie)
    print(trie.search("略"))
    
['略不世出', '略地侵城', '略地攻城', '略施小計(jì)', '略無(wú)忌憚', '略知一二', '略知皮毛', '略窺一斑', '略勝一籌', '略見(jiàn)一斑', '略遜一籌', '略高一籌', '略識(shí)之無(wú)', '略跡原心', '略跡原情', '略跡論心']

成語(yǔ)接龍

程序在cyjl.py里面,運(yùn)行之后,我們得到:

==============================
=== 歡迎進(jìn)行西西嘛呦成語(yǔ)接龍游戲 ===
請(qǐng)選擇難度(輸入1(簡(jiǎn)單),輸入2(困難))
難度:2

這里的困難模式指西西助手在回答的時(shí)候會(huì)考慮成語(yǔ)最后一個(gè)字在語(yǔ)料庫(kù)中開(kāi)頭出現(xiàn)的次數(shù),返回出現(xiàn)次數(shù)最少的成語(yǔ)來(lái)讓你盡可能的回答不上來(lái)。然后就會(huì)出一個(gè)字:

出題: 株

此時(shí),你可以輸入提示來(lái)獲取一階段提示,主要是其中一個(gè)答案的解釋?zhuān)€不會(huì),再輸入再提示,會(huì)給出該成語(yǔ)的前三個(gè)字。還是不會(huì),則輸入看看,則會(huì)展示可能的一些結(jié)果(需要注意的是提示的成語(yǔ)可能沒(méi)在這個(gè)結(jié)果中,因?yàn)槲覀冎环祷厍?個(gè))。接著我們想了解該成語(yǔ),輸入介紹 成語(yǔ)名,就會(huì)展示出該成語(yǔ)的一些信息。其它的一些注意的是,對(duì)于輸入空值和不正確的值都進(jìn)行了處理,不會(huì)影響程序的運(yùn)行。

出題: 袖
你的回答:提示
提示:成語(yǔ)解釋-- 袖手:藏手于袖中;充耳:塞住耳朵。指不聞不問(wèn),漠然置之
你的回答:再提示
提示:前三個(gè)字-- 袖手充...
你的回答:看看
['袖中揮拳', '袖手傍觀', '袖手充耳', '袖手旁觀', '袖里乾坤']
你的回答:介紹 袖手充耳
==============================
成語(yǔ):袖手充耳
拼音:xiù shǒu chōng ěr
成語(yǔ)解釋?zhuān)盒涫郑翰厥钟谛渲校怀涠喝《?。指不聞不?wèn),漠然置之
典故出處:清·夏燮《中西紀(jì)事·江上議款》:“既不能誓師討賊,視其力之所能為,則當(dāng)袖手充耳,姑聽(tīng)命于發(fā)蹤指示之人。”
近義詞:袖手旁觀、充耳不聞、漠然置之
反義詞:nan
常用程度:一般
感情色彩:褒義詞
語(yǔ)法用法:作謂語(yǔ)、定語(yǔ);用于處事
成語(yǔ)結(jié)構(gòu):聯(lián)合式
產(chǎn)生年代:近代
英文翻譯:nan
成語(yǔ)謎面:nan
==============================
你的回答:

以上就是關(guān)于“基于Python如何實(shí)現(xiàn)西西成語(yǔ)接龍”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI