在如何用 Sikuli 來將重複性的工作自動化,讓省下來的時間從事更有生產力的工作並提升生活品質。 中有介紹到 Sikuli 主要是遵循 Python 2.7 (Jyhton) 語法,故在讀入,由Excel轉出內含中文的資料讀入程式時,也會遇到 Python 2.7 所遇到的問題,這問題可分為以下兩個部分:
CSV 檔格式的問題
由 Excel 轉出的 csv 檔並不能夠直接使用,必需要先用 notepad++ 之類的程式,將 csv 檔轉為 UTF-8碼格式,就如同下圖所示,在 notepad++ 開啟 csv 檔,選擇[轉換]->[轉換至UTF-8碼格式]後,在將 csv 檔存檔。
讀取 CSV 檔
在 Python 2.7 中是用提供讀取 csv 檔用的套件,套件名稱就叫 csv,但在讀取中文的有問題,如同以下範例所示:
如要讀取內含中文的 csv 檔, 必需用codecs套件所提供的open方法,來指定打開的文件的語言編碼,它會在讀取的時候自動轉換為內部unicode,避免前述問題,但 codecs 套件讀入的格式,不是如 csv 套件一般,已經轉換好的 list 格式,需自行處理,不過相當簡單,只要用 split 函式,以換行符號(\n)為關鍵字,即可轉換為 list,如下列範例所示。
import codecs;
data = open("c:\\jython2.7.1\\test2.csv").read();
#判斷是否被轉含有 BOM UTF-8 格式,如果是將 BOM 去除
if data[:3] == codecs.BOM_UTF8:
data = data[3:];
#用換行符號(\n)將每行資料分開
splitdata=data.split('\n');
for i in splitdata:
print(i);
執行結果如下圖:
結語
當我們有大量資料要輸入網頁或特定程式,而不想要用人工一筆一筆鍵入時,我們可用 sikuli 讀入 csv 檔,將資料一筆一筆輸入網頁或特定程式,而如果資料含有中文時,在讀入 csv 檔時,就要採用上述的處理方式,而無法直接套用內建csv 套件,如有需求的朋友,可參考使用。