標題當然是假的,又不是天才,怎麼快快樂樂學 Python 。也不是要出書,只是不知道要下什麼標題。
事情由來是這樣的,我在 survey 在 FreeBSD 上可以 run 的 lucene 程式,原本中意的是 ferret(1) ,不過看了一下文件發現
- API 不相容
- 不能讀 dotLucene(2) 的 index ,其實意思就是跟原生的 Java lucene 不相容啦
基於上述兩個理由,我只好含淚斬 Ruby 了。不然上面那個標題就會是「快快樂樂學 Ruby」了。
Python 有個 PyLucene 可以用,而它其實有點接近原生版本的 Lucene ,因為
- API 大致相容,說大致是因為我才剛學,不敢保證
- 可以 access dotLucene 的 index file ,這很重要,敝實驗室的流派就是點點點(3)
- 它是用 gcj 編譯的,感覺會比 Java 快一點,而我也可以確定大部份的功能是相同的。籠統地說,算是 Lucene 的 Python-binding 。
不過說要學個語言不是那麼容易,雖然說比起英語德語加法語來說,學個程式語言比較起來容易太多了,可是沒有個入門文件也是不行的。上網一查「Python」,結果台灣陣亡,第一頁最有用的就是第一筆: Python 教學文件。這可以位在香港的,看來我以前沒學 Python 也不能怪自己,資源少的可憐的感覺,隨隨便便要找個論壇都還來個 404 。
有了入門文件,沒有個中文文件是不行的。在我安裝了 PyLucene 之後,發現要查找中文還真是不可能的任務。程式一 run 下去就來個
的訊息,當然人家在 error message 都給了資料了,不去看一下也不對吧。所以,找出原因,只要在程式碼中加入
就沒事了。…當然不會就這樣沒事,結果你不找問題,問題還是會找上你:
這就糗大了,它又沒說要怎麼辦?只好再次求助 Google 了。結論是,在字串後面加上 .encode("utf-8″) 就可以了。(現在大家都老大不小了,應該改用 utf-8 了吧)
當然在做 Text Processing 的人,少不了要用到 Regular Expression,那入門文件當然是沒有啦。目前我是正在看這裡,如果有人可以指點一二的,也麻煩告訴我一下吧。
先就這樣吧,反正趁有點小空的時候來學學 Python 也不錯,希望以後可以快快樂樂啦。
Reference:
[tags] python, ferret, pylucene, lucene [/tags]
「Python 教學文件」是很好的入門文件,畢竟過了這麼多年,Python 也長大不小,就蠻需要 http://www.python.org/doc/ 加持。
如果常查閱參考文件,也剛好用 Firefox 的話,與 Trac 同家公司的傢私 http://www.edgewall.org/python-sidebar/ 可考慮裝一下。
也是看 Kunchling 先生的文件長大(咦?)。另外 Mertz 先生的書 Text Processing in Python http://gnosis.cx/TPiP/ 涵蓋、彙整更多文字處理的主題 … 用 .txt 有點嚇人就是了。
這, 實在是太謝謝你了
在 Python 裡面有兩種字串物件:str 和 unicode。str 可以使用各式各樣的編碼,包括 UTF-8, UTF-16,而 unicode 就是 Unicode。
如果需要在不同編碼間轉換,我通常會這樣作:
# -*- coding: UTF-8 -*-
uni = "萬國碼".decode(‘UTF-8′)
big5str = uni.encode(‘Big5′)
sjisstr = uni.encode(‘S-JIS’)
謝謝,不過請教一下,Unicode 包含 UTF-8, UTF-16, UTF-32,那 python 的 Unicode 是?
我想 Python 的 unicode 物件沒存 UTF-*,而是直接存 code point (refer to http://effbot.org/zone/unicode-objects.htm and http://docs.python.org/lib/encodings-overview.html)。
To yungyuc :
謝謝
如果在linux下可以這樣執行
LC_ALL=zh_TW.utf8 python script.py
因為你除了定義code encoding之外
python執行時的自動編碼會使用環境變數裡的設定
所以, 如果你預設非utf8時,
他就會試著轉成你環境變數中的編碼
但是其他編碼的set似乎都比unicode小:)
只要對應不到就會出包了
快快樂樂學 Ruby – 再談 Ferret…
這只是為了要呼應之前的舊文章…
話說昨天早上到了實驗室,發現 b6s 前一晚留給我有關 Ferret 的訊息。兩點,第一是 lukhnos實作了 Ferret 處理中文的方法,在這裡。當然,處理中文很重要….
PyLucene Win32 on googlecode…
……
請問可不可以讓我下載那個文件,讓我離線時也可以看,謝謝!
啊?什麼文件?