วันพุธที่ 20 พฤษภาคม พ.ศ. 2552

Regular Expression Syntax (3)

ชุดสุดท้ายใน Regular Expression Syntax

{m} วางไว้หลังอักษรที่ต้องการบอกจำนวนที่ซ้ำได้


>>> import re
>>> my_pattern = 'a{2}'
>>> raw_string = 'a aa a aa'
>>> re.sub(my_pattern,'-',raw_string)
'a - a -'


{m,n} วางไว้หลังอักษรที่ต้องการบอกจำนวนที่ซ้ำได้ โดยระบุเป็นช่วงตัวเลข


>>> my_pattern = 'a{2,4}'
>>> raw_string = 'a aa aaa aaaa aaaaa'
>>> re.sub(my_pattern,'-',raw_string)
'a - - - -a'


[] เป็นการระบุช่วงตัวอักษรที่ต้องการ


>>> my_pattern = '[A-Z]'
>>> raw_string = 'Apple Banana'
>>> re.sub(my_pattern,'-',raw_string)
'-pple -anana'


'|' ใช้ร่วมกับ [] โดยมีความหมายว่า หรือ ใช้คั่นระหว่างตัวอักษรที่ต้องการเลือก


>>> my_pattern = '[c|b]at'
>>> raw_string = 'cat rat bat'
>>> re.sub(my_pattern,'-',raw_string)
'- rat -'


() ใช้จัดกลุ่มให้ข้อความที่อยู่ภายในโดยสามารถใช้ร่วมกับสัญลักษณ์อื่นๆ จากตัวอย่างจะเห็นว่า (ab)+ การซ้ำนั้นจะเป็นการซ้ำของ ab ซึ่งจะแตกต่างกับ ab+ นั้นการซ้ำนั้นจะซ้ำเฉพาะตัว b


>>> my_pattern = '(ab)'
>>> raw_string = 'aa ab bb'
>>> re.sub(my_pattern,'-',raw_string)
'aa - bb'
>>> my_pattern = '(ab)+'
>>> raw_string = 'aa ab abab baba'
>>> re.sub(my_pattern,'-',raw_string)
'aa - - b-a'

วันอังคารที่ 19 พฤษภาคม พ.ศ. 2552

Regular Expression Syntax (2)

มาต่อกับสัญลักษณ์ที่เหลือของ regular expression ในภาษาไพธอน

"." หมายถึง แทนตัวอักษรอะไรก็ได้


>>> import re
>>> my_pattern = '.at'
>>> raw_string = 'I love rat and cat'
>>> re.sub(my_pattern,'dog',raw_string)
'I love dog and dog'


"^" หมายถึง คำที่อยู่ด้านหน้า โดยวางไว้ข้างหน้าคำที่ต้องการค้นหา เหมือน \A


>>> my_pattern = '^dog'
>>> raw_string = 'dog dog dog'
>>> re.sub(my_pattern,'cat',raw_string)
'cat dog dog'


"$" หมายถึง คำที่อยู่ด้านหลัง โดยวางไว้ข้างหลังคำที่ต้องการค้นหา เหมือน \Z


>>> my_pattern = 'dog$'
>>> raw_string = 'dog dog dog'
>>> re.sub(my_pattern,'cat',raw_string)
'dog dog cat'


"*" เอาไว้ท้ายอักษรที่ต้องการสื่อว่าไม่มี หรือ มี และก็ซ้ำได้ด้วย


>>> my_pattern = 'ab*'
>>> raw_string = 'aa , abb , abbb , ba , bb , bc'
>>> re.sub(my_pattern,'-',raw_string)
'-- , - , - , b- , bb , bc'


"+" เอาไว้ท้ายอักษรที่ต้องการสื่อต้องมี และก็ซ้ำได้ด้วย


>>> my_pattern = 'ab+'
>>> raw_string = 'aa , abb , abbb , ba , bb , bc'
>>> re.sub(my_pattern,'-',raw_string)
'aa , - , - , ba , bb , bc'


"?" เอาไว้ท้ายอักษรที่ต้องการสื่อว่าไม่มี หรือ มี แต่ซ้ำไม่ได้


>>> my_pattern = 'ab?'
>>> raw_string = 'aa , abb , abbb , ba , bb , bc'
>>> re.sub(my_pattern,'-',raw_string)
'-- , -b , -bb , b- , bb , bc'

วันอาทิตย์ที่ 17 พฤษภาคม พ.ศ. 2552

Regular Expression Syntax

ส่วนประกอบที่สำคัญในการทำ regular expression คือ ตัว patterns ที่ใช้ในการค้นหา จากคราวที่แล้ว จะพบว่า \b นั้นอยู่ในคำที่ต้องการค้นหา ได้แก่ r'\bROAD\b' ซึ่ง \b เป็น syntax ที่มีความหมายพิเศษ ซึ่งในไพธอนนั้นจะมี syntax และวิธีการใช้แต่ต่างกันไปดังนี้ ขั้นแรกก็


>>>import re


\A หมายถึงต้องเป็นต้นประโยค จากตัวอย่าง Mister จะถูกเปลี่ยนเฉพาะคำแรก

>>>my_pattern = '\AMister'
>>>raw_string = 'Mister python and Mister Thailand'
>>>re.sub(my_pattern,'MR.',raw_string)
'MR. python and Mister Thailand'


\b หมายถึงต้องเป็นขอบของคำ จากตัวอย่างเดิม คำว่า BROAD จะไม่ถูกเปลี่ยนข้างหน้า R ยังมีตัว B ทำให้ R ไม่เป็นขอบของคำ

>>>import re
>>>s = '100 NORTH BROAD ROAD'
>>>re.sub(r'\bROAD\b', 'RD.', s)
'100 NORTH BROAD RD.'


\B ตรงข้ามกับ \b คือคำนั้นต้องเป็นส่วนข้างใน

>>>my_pattern = '\BROAD'
>>>raw_string = 'BROAD ROAD'
>>>re.sub(my_pattern,'RD.',raw_string)
'BRD. ROAD'


\d หมายถึงตัวเลข


>>>my_pattern = '\d'
>>>raw_string = 'credit number 1234-1234-1234'
>>>re.sub(my_pattern,'x',raw_string)
'credit number xxxx-xxxx-xxxx'


\D ตรงข้ามกับ \d คือทุกอย่างที่ไม่ใช่ตัวเลข


>>>my_pattern = '\D'
>>>raw_string = 'credit number 1234-1234-1234'
>>>re.sub(my_pattern,'x',raw_string)
'xxxxxxxxxxxxxx1234x1234x1234'


\s หมายถึงช่องว่าง


>>>my_pattern = '\s'
>>>raw_string = 'a b c d e'
>>>re.sub(my_pattern,'_',raw_string)
'a_b_c_d_e'


\S ตรงข้ามกับ \s คือทุกอย่างที่ไม่ใช่ช่องว่าง


>>>my_pattern = '\S'
>>>raw_string = 'a b c d e'
>>>re.sub(my_pattern,'_',raw_string)
'_ _ _ _ _'


\w หมายถึงตัวอักษรและตัวเลข โดยจะไม่เอาสัญลักษณ์ต่างๆ


>>>my_pattern = '\w'
>>>raw_string = 'a!b#c%d&e.'
>>>re.sub(my_pattern,'_',raw_string)
'_!_#_%_&_.'


\W ตรงข้ามกับ \w คือพวกสัญลักษณ์ต่างๆ

>>>my_pattern = '\W'
>>>raw_string = 'a!b#c%d&e.'
>>>re.sub(my_pattern,'_',raw_string)
'a_b_c_d_e_'


\z หมายถึงต้องอยู่สุดท้ายของข้อความ


>>>my_pattern = 'Mister\Z'
>>>raw_string = 'Mister and Mister'
>>>re.sub(my_pattern,'MR.',raw_string)
'Mister and MR.'

วันศุกร์ที่ 15 พฤษภาคม พ.ศ. 2552

Regular Expression (2)

จากคราวที่แล้วนั้นจะเห็นความจำเป็นที่ต้องให้งาน regular expression ก็มาต่อถึงวิธีการใช้งานโดยขั้นแรกต้องเรียกใช้ module re ก็จะสามารถที่ใช้งานฟังก์ชั่นต่างได้ ซึ่งการเขียน regular expression ในไพธอนนั้นมีรูปแบบในการเขียนแบบเดียวกับภาษา Perl ตัวอย่างต่อเนื่องจากคราวที่แล้วที่ต้องการเปลี่ยนคำว่า ROAD ให้เป็นคำย่อว่า RD


>>>import re
>>>s = '100 NORTH BROAD ROAD'
>>>re.sub(r'\bROAD\b', 'RD.', s)
'100 NORTH BROAD RD.'


จะพบว่าคำที่เปลี่ยน มีแค่ ROAD เป็น RD. แต่ชื่อถนน BROAD นั้นไม่เปลี่ยนแปลง โดยที่ re.sub เป็นฟังก์ชั่นในการค้นหาและเปลี่ยนคำตามที่เราต้องการซึ่งรับข้อมูล ส่วน r'\bROAD\b' เป็นรูปแบบข้อความที่ค้นหา 'RD.' เป็นคำที่ต้องการนำไปแทนที่และ s คือข้อความต้นฉบับ

reference
http://www.diveintopython.org/regular_expressions/street_addresses.html

วันพฤหัสบดีที่ 14 พฤษภาคม พ.ศ. 2552

Regular Expression

regular expression คือการสร้างรูปแบบของข้อความ เพื่อใช้ในการหา,เปลี่ยนแปลง หรือ ตรวจสอบความถูกต้อง

ทำไมต้องใช้ regular expression
ยกตัวอย่าง เมื่อเราต้องการเปลี่ยนคำบางคำเป็นคำย่อ เช่น '100 NORTH MAIN ROAD'
อย่างนี้เราสามารถใช้ replace ในการเปลี่ยนได้ดังนี้


>>> s = '100 NORTH MAIN ROAD'
>>> s.replace('ROAD', 'RD.')
'100 NORTH MAIN RD.'


แต่ถ้าถนนไม่ใช่ MAIN ROAD แต่เป็น BROAD ROAD ผลที่เกิดคือ


>>> s = '100 NORTH BROAD ROAD'
>>> s.replace('ROAD', 'RD.')
'100 NORTH BRD. RD.'


ทำให้ชื่อของถนนนั้นผิด ดังนั้นจึงต้องให้ regular expression ช่วยจัดการครับ

reference
http://www.diveintopython.org/regular_expressions/street_addresses.html

Next >>

วันอังคารที่ 12 พฤษภาคม พ.ศ. 2552

วันจันทร์ที่ 11 พฤษภาคม พ.ศ. 2552

Compile Python

เนื่องจากไพธอนเป็นภาษาแบบ script ซึ่งสามารถทำงานได้เลย โดยไม่จำเป็นที่จะต้องคอมไพล์ก่อน ส่วนมากเมื่อเขียนโปรแกรมเสร็จก็จะสั่งรันโปรแกรมเลยทันทีซึ่งเป็นข้อดีของภาษาแบบนี้ แต่ถ้าจะคอมไพล์ก็ได้ซึ่งมีวิธีการดังต่อไปนี้

เมื่อเขียนโปรแกรมเสร็จแล้ว ก็ลองรันดูก่อนว่าไม่มีข้อผิดพลาด เสร็จแล้ว
ใช้ python shell พิมพ์คำสั่งดังนี้


>>>import py_compile
>>>py_compile.compile("a1.py")


ก็จะพบว่ามีไฟล์เพิ่มขึ้นมาชื่อเดียวกันแต่นามสกุลเป็น .pyc คำสั่งนี้เป็นการคอมไพล์แค่ไฟล์เดียว
แต่ถ้าต้องการที่จะคอมไพล์หลายๆไฟล์นั้นก็จะมีอีกคำสั่งได้แก่


>>>import compileall
>>>compileall.compile_dir("dir_name", force=1)


ซึ่ง dir_name นั้นก็เป็นชื่อโฟลเดอร์ที่เก็บไพธอนไฟล์ที่ต้องการคอมไพล์
โดยคำสั่งนี้จะคอมไพล์ได้ทีละหลายไฟล์

วันเสาร์ที่ 9 พฤษภาคม พ.ศ. 2552

Python SDK version 1.2.2 for Google App Engine

Python SDK version 1.2.2 ออกมาแล้ว
Google App Engine ได้ปล่อยตัว SDK ในภาษาไพธอนเวอร์ชั่นใหม่ออกมาซึ่งสามารถดู
รายละเอียดเพิ่มเติม ที่นี่
ดาวโหลดได้ ที่นี่

วันศุกร์ที่ 8 พฤษภาคม พ.ศ. 2552

วันพฤหัสบดีที่ 7 พฤษภาคม พ.ศ. 2552

Python 3.1

ไพธอนเวอร์ชั่นใหม่ออกแล้วเป็นเวอร์ชั่น 3.1 กระโดดจาก 3.0.1
มีรายละเอียดต่างๆดังนี้
  • เพิ่มคลาสใหม่คือ Ordered Dictionaries ซึ่งคล้ายกับ Dictionaries แต่ว่าจะมีการเรียงลำดับโดย key ตั้งแต่เพิ่มข้อมูลเข้าไปเลย
  • เพิ่มรูปแบบในการแบ่งหลักพันของตัวเลข
  • เพิ่มฟังก์ชั่น bit_length ของตัวแปร int
  • ฟิลด์ในฟังก์ชั่น format() จะเรียงลำดับอัตโนมัติ
  • ฟังก์ชั่น round() จะคืนชนิดข้อมูลเป็น int ถ้าใส่ข้อมูลชนิด int จากเดิมจะคืน float
  • และมีการเพิ่มเติมปรับเปลี่ยนและปรับปรุงฟังก์ชั่นอื่นๆอีก
สามารถดูข้อมูลเพิ่มเติมและดาวโหลดได้ เอกสารของไพธอน 3.1

วันพุธที่ 6 พฤษภาคม พ.ศ. 2552

install module

ไพธอนนั้นมีโมดูลเสริมมากมายให้เลือกแล้วแต่ผู้ใช้งานต้องการทำงานอะไรพิเศษเพิ่มเติม เช่น Graphical interface, Database,Image processing, Game, Web, XML และอื่นๆ ซึ่งเราสามารถหาโมดูลมาลงเสริมได้ตามต้องการซึ่งการลงโปรแกรมเสริมใน Window นั้นก็แล้วแต่ผู้ทำโมดูล ถ้าเป็นรูปแบบ exe ก็สามารถรันได้เลยโดยเลือก path ที่ลงไพธอนไว้ แต่ส่วนมากโปรแกรมจะหา path ให้อัตโนมัติ แต่ยังมีอีกรูปแบบคือการลงผ่านคำสั่งในไพธอน ยกตัวอย่าง โมดูล เช่น BeautifulSoup, webmodules นั้นเมื่อดาวโหลดและแตกไฟล์แล้วจะไม่มีไฟล์ exe ให้รันแต่จะมีไฟล์ชื่อ setup.py ซึ่งไฟล์นี้แหละที่จะเป็นตัว install แต่ต้องทำผ่านไพธอน วิธีการคือ เมื่อแตกไฟล์เรียบร้อย ก็ใช้โปรแกรม command ใน Window ไปที่ไดเรกทอรีที่แตกไฟล์ไว้จากนั้นก็ใช้คำสั่ง



python setup.py install


โปรแกรมก็จะทำการลงโมดูลเสริมต่างๆ ซึ่งรายละเอียดลึกๆสามารถหาอ่านเพิ่มเติมได้ที่นี่
เว็บที่รวบรวมโมดูลที่ยอดนิยม http://www.catswhocode.com/blog/python-50-modules-for-all-needs

วันอังคารที่ 5 พฤษภาคม พ.ศ. 2552

วันจันทร์ที่ 4 พฤษภาคม พ.ศ. 2552

Python Editor (2)

Editor ที่มากับ python นั้นยังมี tool ให้ใช้น้อยทำให้การเขียน
โปรแกรมทำได้ไม่ค่อยสะดวกจึงมี Editor ต่างๆขึ้นมาซึ่งมีทั้งฟรี
และเสียเงิน ลองดูรายละเอียดแต่ละโปรแกรมได้ที่
http://wiki.python.org/moin/PythonEditors
เพื่อความคล่องตัวในการเขียนโปรแกรม