利用 Python 與 Google Colab 打造一個 Wordle 解題小幫手

最近也太多人在玩 #Wordle 了吧!😆

我最近也試玩了一下
有趣之餘也發現自己英文退步好多 🤪
尤其是在想第一個單字要輸入什麼的時候腦中常常毫無想法哈哈 👻
(英文單字量大概在高三之後就會開始走下坡)

這時候我想到了 #NLP 常用的一個套件 #NLTK
全名是 Natural Language Toolkit (#自然語言處理 工具包)
相信有在玩 NLP 的朋友都不陌生這個套件裡面有現成的英文單字 👍

想說可以給我一點靈感
於是我就用 #Python#GoogleColab 寫了一個小 project
可以幫助我破壞遊戲體驗 ❌
可以幫助我更快樂地進行遊戲 ✅

大家有興趣的話可以到我的 #GitHub repo 看看
👉https://github.com/jumpingchu/Wordle-Helper

閱讀更多»

數據分析救星!3 個實用但常被忽略的 Google Colab 功能

相信很多人在做數據分析或資料清理的時候,都會使用 Google Colab、Jupyter Notebook 這些工具,其中 Colab 因為免安裝、易分享、可以跑 GPU 等等的特性,最近越來越多人在使用,老師們在線上課程教學上也很方便,但其實很多人不知道 Colab 有一些比較隱藏容易被忽略的實用功能,學會的話可以讓數據分析更加事半功倍唷!

Interactive Table (互動式表格)

原本的 Colab 表格就跟 Jupyter 表格是一樣的,如果要篩選或排序就要另外利用 Pandas 寫 sort_values、filter 或是 query 的語法,而我最近做爬蟲整理資料時發現,有個功能可以將原本的表格轉為互動式的,直接透過點按來做篩選、排序、分頁等等的效果。

這個功能預設是關閉的,有兩種方式可以轉換成互動式

  • 執行下列程式碼開啟/關閉功能(建議)
from google.colab import data_table
# 開啟功能
data_table.enable_dataframe_formatter()
# 關閉功能
data_table.disable_dataframe_formatter()
  • 在表格輸出後,點擊表格右上方的按鈕

轉換按鈕如下圖的紅框處,但這方法需要每次表格產出時都按一次,如果想要每個表格都直接產出互動式表格的話,還是建議執行上面的程式碼來一次搞定~

轉換後的互動式表格會長下方這樣

閱讀更多»

將 FastAPI 部署到 AWS API Gateway 教學(配合 Lambda 使用)

本文將教學如何把寫好的 FastAPI 程式碼,配合 AWS Lambda 部署到 API Gateway 上(包含詳細圖文解說 API Gateway 的設定)

前情提要

這篇文章會使用到 AWS Lambda 的函式,若還不清楚怎麼使用的話,推薦可以先看下面這篇文章再回來,如果正在閱讀文章的你已經會使用,那就可以直接往下看囉!

在 AWS Lambda 上使用 Python 第三方套件教學

流程步驟

  1. 建立 API
  2. 設定 API
    • 建立方法
    • 建立資源
  3. 部署 API
  4. 實際呼叫 API 測試

1. 建立 API

首先要確定自己要建立的區域,建議使用比較近的國家地區,例如:東京、大阪、新加坡或香港,因為這將會嚴重影響 API 的速度,我之前誤闖美國東部 Ohio (us-east-2),導致我在 GET / POST 都慢到懷疑人生,所以請先一定要選擇好!

接著就可以進入 AWS API Gateway 的頁面, API 類型選擇「REST API」並點選「建置」,若是第一次在這個國家地區建立 API 的話,會跳出一個教學視窗,大概看一看就可以按確定把它關掉了。

接下來會進入到以下頁面,此時預設可能是「範本 API」,請改成建立「新 API」,並且設定一個「API 名稱」,因為我的 API 是要來收集 cookie 的,所以我命名為 cookie_api,設定完成就可以按「建立 API」。

閱讀更多»

奧運即時比分 LINE 通知 (Python + LINE Notify)

當家裡沒電視、沒辦法看奧運轉播,卻很想知道中華隊現在比數如何的時候,發現 Google 有即時更新的比分,於是打開 F12 看了一下 XHR,有一個開頭是 torspo 的網址一直在送資料,如下圖。

URL = ‘https://www.google.com/async/torspo?ei=wuEEYZkqiLWYBeK8pYAG&yv=3&p3=1&async=emids:%2Fg%2F11fr0b7qvf,id:lu,ctx:%5Bnull%2Cnull%2C%5B%5B%22ev2%22%2C%22clb%22%2C%22tlb%22%2C%22tv%22%2C%22gs2%22%2C%22msv%22%5D%5D%2Cnull%2C1%2Cnull%2C1%2C%5Bnull%2C%5Bnull%2Cnull%2Cnull%2C%22%2Fm%2F05gj2h%22%5D%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2C%5B%22%2Fm%2F0194d%22%5D%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2Cnull%2C%5Bnull%2Cnull%2C%22%2Fm%2F06vvk%22%5D%5D%2C28%2C1%5D,dme:%2Fg%2F11fr0b7qvf,ct:,hl:zh-TW,tz:Asia%2FTaipei,_fmt:jspb’

但這網址除了參數有夠長之外,回應也非常混亂,有很多層的資料,光是解析出來就花了我好多時間,總之比賽國家和比分資訊就是藏在 ["tsp-mr4","tsp-vm"] 這個的後面,就用 regex 加上一些簡單的資料清理把它們抓出來:

閱讀更多»

在 AWS Lambda 上使用 Python 第三方套件教學

本文紀錄如何在 AWS Lambda 上安裝並使用 Python 第三方套件,步驟包含在本機先建立套件的 zip 檔,以及新增 Layer 到 Lambda 函式上

Lambda 函式預設無法使用 Python 第三方套件

我在 AWS Lambda 撰寫好函式(或是使用 $ zip <dest_filename>.zip <py_file>.py 製作 python zip 檔後上傳函式),函式中有使用到 requests 這個套件,執行 Test 時會顯示 No module named 'requests',原因就是 AWS Lambda 預設是沒有 requests 這個套件的,需要另外上傳套件檔,以下是解決方法。

  1. 安裝所需套件至 python 資料夾
  2. 打包 python 套件資料夾為 zip 檔
  3. 建立新 Layer
  4. 將 Layer 新增至函式

前兩步驟是在本機完成,後兩步驟是在 AWS 上進行,接下來將詳細解說各步驟。

1. 安裝所需套件至 python 資料夾

AWS 官方文件說額外的套件必須使用 「python」 這個名稱的資料夾打包,所以要在專案資料夾內建立一個 python 資料夾,並將套件安裝到裡面,詳細 Terminal 指令如下:

$ mkdir python
$ cd python

# 安裝單一套件
$ pip install --target . requests

# 一次安裝多個套件
$ pip install --target . -r requirements.txt
閱讀更多»