5/14/2018

劉姥姥幾進大觀園?

洪懿妍,時間和人生的主導權絕對在自己手上,Cheers 雜誌 167 期 ,2014-08
禮客時尚館董事長翁素蕙曾邀請好友張淑芬和張忠謀夫婦,一起參觀她位於台北木柵「159文創莊園」裡的《紅樓夢》壁畫屏風,當大夥看到劉姥姥進大觀園的畫作時,張忠謀是唯一點出劉姥姥三進大觀園的人。此後,翁素蕙邀請友人看畫,一定會補上這個問題:「你知道劉姥姥幾進大觀園嗎?」至今仍未有人答出來過。 
最近正在學 Python也準備開新課突然想到上一段話就寫個程式來執行一下。因為還不熟,暫時避開有分頁的網頁。選定的網頁是維基文庫程式碼

import requests
import numpy as np
for i in range(120): # 120 回
    if i <= 8:
        chapter_no = "00" + str(i + 1) # 網址使用三個位數,可能有其他更好的寫法
    elif 9 <= i <= 98:
        chapter_no = "0" + str(i + 1)
    else: 
        chapter_no = str(i + 1)
    url = "https://zh.wikisource.org/wiki/%E7%B4%85"  \
             + "%E6%A8%93%E5%A4%A2/%E7%AC%AC"  \
             + chapter_no + "%E5%9B%9E"
    hlm = requests.get(url)
    if np.char.count(hlm.text, "劉姥姥") > 0 and np.char.count(hlm.text, "園") > 0: # 同時出現
        print("劉姥姥和園同時出現在第 ", str(i + 1), " 回")

輸出
劉姥姥和園同時出現在第  39  回
劉姥姥和園同時出現在第  40  回
劉姥姥和園同時出現在第  41  回
劉姥姥和園同時出現在第  42  回
劉姥姥和園同時出現在第  113  回
劉姥姥和園同時出現在第  120  回

程式只找到同時出現 "劉姥姥" 和 "園" 的章回。幾進大觀園需要了解上下文的意涵,尚待努力中。

1 則留言:

  1. 可以用chapter_no = str(i+1).zfill(3)

    回覆刪除