2016年2月23日 星期二

Python mysql library安裝

解決missing config-win.h & mysqlclient.lib.的問題

2016年2月15日 星期一

Python standard library string

python standard libray string
提供了一些字串操作基本功能

str.translate(table[, deletechars])

translate可以依據table來轉換str
如果轉換的目標是None,則match的字元就會被刪除

>>> 'read this short text'.translate(None, 'aeiou')
'rd ths shrt txt'

參考網址
https://docs.python.org/2.7/library/string.html?highlight=translate#module-string

python standard library os

python standard library裡提供os這個module
可以進行os的一些基本操作
例如取得資料夾底下的檔案名

os.listdir(path)
列出路徑下,所有檔案名字

os.rename(src,dst)
將src檔名改成dst

os.getcwd( )
取得work directory 路徑

os.chdir(path)
改變work directory 路徑

參考網址
https://docs.python.org/2/library/os.html

2016年2月11日 星期四

python escape convert

要將字串轉成escape的型式
程式碼如下

def escape_covert(s):
    for (i, o) in ( ('&',  '&'),
                   ('>', '>'),
                   ('<', '&lt;'),
                   ('"', '&quot;'),
                   ):
        s = s.replace(i, o)
 
    return s
要注意 ('&',  '&amp;')要放第一個
否則其他escape charater
轉換完的&會被轉成'&amp
造成錯誤


但有更簡便的做法
就是import python的standard library cgi

import cgi

def escape_covert(s):
    return cgi.escape(s,quote=True)

參考網址
https://docs.python.org/2/library/cgi.html

HTML escape characters


有時候在輸入字串時
字串裡的字會跟HTML TAG
相同而造成把字串當成HTML TAG
結果網頁輸出錯誤的內容
這時候就要用escape characters

較常使用的escape characters

  • Space   &nbsp;
  • "           &quot;
  • &         &amp;
  • <          &lt;
  • =          &#613
  • >          &gt;


Symbol Entity Name
&euro;
Space &nbsp;
" &quot;
& &amp;
< &lt;
= &#61;
> &gt;
Non-breaking space &nbsp;
¡ &iexcl;
¢ &cent;
£ &pound;
¤ &curren;
¥ &yen;
¦ &brvbar;
§ &sect;
¨ &uml;
© &copy;
ª &ordf;
¬ &not;
­ &shy;
® &reg;
¯ &macr;
° &deg;
± &plusmn;
² &sup2;
³ &sup3;
´ &acute;
µ &micro;
&para;
· &middot;
¸ &cedil;
¹ &sup1;
º &ordm;
» &raquo;
¼ &frac14;
½ &frac12;
¾ &frac34;
¿ &iquest;
À &Agrave;
Á &Aacute;
 &Acirc;
à &Atilde;
Ä &Auml;
Å &Aring;
Æ &AElig;
Ç &Ccedil;
È &Egrave;
É &Eacute;
Ê &Ecirc;
Ë &Euml;
Ì &Igrave;
Í &Iacute;
Î &Icirc;
Ï &Iuml;
Ð &ETH;
Ñ &Ntilde;
Ò &Ograve;
Ó &Oacute;
Ô &Ocirc;
Õ &Otilde;
Ö &Ouml;
× &times;
Ø &Oslash;
Ù &Ugrave;
Ú &Uacute;
Û &Ucirc;
Ü &Uuml;
Ý &Yacute;
Þ &THORN;
ß &szlig;
à &agrave;
á &aacute;
â &acirc;
ã &atilde;
ä &auml;
å &aring;
æ &aelig;
ç &ccedil;
è &egrave;
é &eacute;
ê &ecirc;
ë &euml;
ì &igrave;
í &iacute;
î &icirc;
ï &iuml;
ð &eth;
ñ &ntilde;
ò &ograve;
ó &oacute;
ô &ocirc;
õ &otilde;
ö &ouml;
÷ &divide;
ø &oslash;
ù &ugrave;
ú &uacute;
û &ucirc;
ü &uuml;
ý &yacute;
þ &thorn;

Python string formatting

Python string formatting有二種
% 和 format method
%是比較舊的方式
建議使用format,比較恰當
在讀程式時較易理解


s1 = "John!"
s2 = "love"

print "i am  %s" % s1     #i am John
print "i am  {0}".format(s1) #i am John

print "with %(kwarg)s!" % {'kwarg':sub2} #with love
print "with {kwarg}!".format(kwarg=sub2) #with love

2016年2月10日 星期三

HTML select

<select>可以用做下拉是選單
搭配<option>做為選擇的值
而query parameter就是option的值
跟checkbox和radio不同
query parameter一定有值
代表至少會是其中一個option裡的值


<form action="/testform">
   <select name="q">
    <option>one</option>
    <option>two</option>
    <option>three</option>
   </select>
   <input type="submit">
</form>


而option也可以給value attribute
有給則query parameter就會是value attribute
沒有給則預設是option裡的值

    <option value="1">one</option>
    <option>two</option>
    <option>three</option>

選one時query parameter會給1
其他會是two和three

HTML lable

要想在checkbox或在radio的選項
顯示選項的提示
可以使用<lable>
把<input>放在lable
在input前面顯示提示及可

<form>
   <lable>
      one
     <input type="checkbox" name="q">
   </lable>
   <lable>
      two
     <input type="checkbox" name="s">
   </lable>
   <lable>
      three
     <input type="checkbox" name="r">
   </lable>  
     <input type="submit">
</form>

one two three
<form>
   <lable>
      one
     <input type="radio" name="q" value="one">
   </lable>
   <lable>
      two
     <input type="radio" name="q" value="two">
   </lable>
   <lable>
      three
     <input type="radio" name="q" value="three">
   </lable>  
     <input type="submit">
</form>

one two three



HTML input radio

<form>
     <input type="radio" name="q" value="one">
     <input type="radio" name="q" value="two">
     <input type="radio" name="q" value="three">
      <input type="submit">
</form>


radio和checkbox一樣
沒有選取的話,query parameter就不會有
而想要三個checkbox只能選其中一個
選另一個,目前選就會取消
只要把name的名字取一樣就行了
而query parameter的值
如果後面沒有給value attribute,則值就是ON
有給就是value attribute的值

HTML input checkbox

<form >
     <input type="checkbox" name="q">    
     <input type="submit">
</form>


如果將q,勾選submit
那query parameter的q值會是ON
那沒有勾選話呢?
答案不是OFF,而是連q都不會在query parameter
所以在判斷是否checkbox有被選取
比較好的做法是判斷ON
不要用OFF來做
有選就是有ON,沒有選就是沒有ON
這樣比較不會出錯

HTML HTTP GET V.S POST

HTTP requset 有二種送參數的method
GET 和 POST

下表為二者的比較



GET POST
  • parameters放在url裡
  • 用來取得資料
  • 最大長度為URL的長度限度
  • 可以當做cache
  • 不可在server端改變
  • parameters放在request header之後
  • 用來更新資料
  • 無最大長度
  • 不可以當做cache
  • 可在server端改變


由表可知二者的不同
在應用上也就不同
必需依據其特性來使用
否則在應用上會造成錯誤或不便

HTML form tag & input tag

form tag裡面放input tag
input tag則可以輸入資料
而且可以送出

例子
<form action="http://www.google.com/search">
     <input name="q">
     <input type="submit">
</form>



在textbox裡輸入資料
再按提交,提交會執行submit
向action提出請求並在後面加上q這個query parameter

HTTP URL RESPONSE

瀏覽器向伺服器請求資料
伺服器就會RESPONSE回去
同樣的跟request一樣
有標頭檔
HTTP/ 1.1 200 OK
Date: 2016 2 10
Content-Type: text/html
Content-Length: 1539

第一行的200代表的是HTTP STATUS CODE
200表示請求正常

標頭檔後面就是請求的資料

2016年2月9日 星期二

HTML URL HTTP

HTTP是網路最常見的協定之一
全名是HyperText Transfer Protocol
這個協定包含二個method
GET和POST
GET是請求檔案
POST則是傳資料到server

http://example.com/profile.html?user=jack&pwd=123#page=1
這行的url,HTTP會使用GET path http-version的參數
所以會變成GET profile.html?user=jack&pwd http/1.1
會向host example.com請求
注意路徑也包括了query parameters  ?user=jack&pwd

除此之外還會傳送header給host
header的型式,為標頭名: 值

Host:www.example.com
user-Agent: chrome

user-Agent指的是使用者用什麼來瀏覽網頁或請求這個網頁

HTML URL PORT

網頁的URL通常省略port

例如輸入
http://example.com/about.html

實際上會在host後面加上 ':'加上 port名稱,做為完整的url

http://example.com:80/about.html

如果沒有指定port,會自動指定port為80

而8080這個port是常見
用來做本機網頁測試
瀏覽網頁用的
通常使用
http://localhost:8080

HTML URL

一般網頁的URL組成

protocol://host/path 的格式

例如
http://example.com/about.html

根據這個URL,可以向example.com找到about.html

而一般省略path只有

http://example.com 這樣,通常代表要求首頁

而一般首頁會使用index.html

HTML URL Fragments

URL的 Fragments,用'#'符號來表示

他的用處是可以target網頁裡的指定element

通常Fragments加在query parameter後面

例如
http://example.com/profile.html?user=jack&pwd=123#page=1

與query parameter同樣的可以傳入多個參數



HTML URL-Query Parameters(Get Parameters)

在瀏覽器根據url的連結
提供該網頁的伺服器
例如
http://example.com/profile.html

這個url獲取profile.html
而我們可以在url後面加參數給伺服器使用

如何加參數,首先在最後的路徑加入'?'符號
之後就是參數,可以加入數個參數
而參數的型式

參數名 = 值

參數與參數間用'&'符號

http://example.com/profile.html?user=jack&pwd=123

上面就會傳user和pwd二個參數給伺服器
而值分別為jack和123



HTML inline element V.S block element

在HTML檔裡,純文字的資料
在字元之間,不管是空幾格空白
或是換行,都會被看成只空一格空白
所以想要換行可以使用<br> tag或是<p> tag

<br>換行
This is first line.
This is second line.


<p>換行
This is first line.
This is second line.

這二者不同之處在於
<br>處理方式是

This is first line.(\n->換行)This is second line.

直接在行與行之間插入element,並處理

而<p> tag的方式是

This is first line.

This is second line.


element型成一個block把element和element之隔開


其他inline element有

  1. <b>粗體
  2. <em>斜體
  3. <img>圖片
  4. <span>
  5. <a>連結
  6. <br>換行




2016年2月8日 星期一

Python Standard Library time

Python Standard Library裡有time module提供相關的功能



例如

想要暫停現在的動作可以使用sleep

time.sleep(1)


程式就會暫停1秒,再執行後面的動作

取得現在的時間可以用ctime

time.ctime( )

會回傳 星期 月份 日期 時:分:秒 年的型式,例如Mon Feb 08 23:24:26 2016

參考網站
https://docs.python.org/2/library/time.html

Python Standard Library webbrowser

Python Standard Library裡有webbrowser這個module

webbrowser提供簡單的function,來執行瀏覽器

例如
webbrowser.open(url, new=0, autoraise=True)

就會打開瀏覽器,瀏覽輸入url的網址的網頁

如果要指定特定瀏覽器來瀏覽
可以使用webbrowser.get來得到object
再使用這個object來呼叫open function


firefox = webbrowser.get('C:/Program Files (x86)/Mozilla Firefox/firefox.exe %s')
firefox.open("www.google.com")

這裡要注意的是傳入get function裡的路徑
與windows裡路徑使用' \ ' 不同
要使用unix-style的' / '才有辦法找到路徑

參考網站
https://docs.python.org/2/library/webbrowser.html

2016年2月6日 星期六

名詞解釋Parsing

Parsing
將字串轉換成資料結構

Http status code

向ip請求網頁文字,server會回傳標頭。
其中標頭裡有status code這一個欄位。
它代表了這次的請求結果如何。
下表是常見的代碼以及它代表的狀況。



code 結果
200 請求成功,網頁正常
301 請求的網頁被移到新的位置上
404 請求失敗,請求的網頁沒有在伺服器上