أقسام المدونة

الخميس، 21 مايو 2015

مثال حول إستخدام وحدة التعابير المنظمة (النمطية) re في مطابقة النصوص

Regular Expressions

مشروح عربيا ووضعته في هذا الرابط من أجل الحفاظ على الإزاحات البيضاء

"""
[-]{3}
تعني ثلاث معترضات hyphen متتالية 
\w{3}
تعني كلمة word من ثلاثة أحرف متتالية (ليست محددة)
\d{3}
تعني ثلاثة أرقام متتالية (ليست محددة)..
|
تعني أي واحدة من القيمتين التي على جانبيها
$
تعني نهاية السلسلة النصية

لنرى التالي كـ مثال:
*. إنتبه للأقواس.....
'((\w{3})|([-]{3}))\d{3}$'
تعني سلسلة نصية تحوي 3 أحرف أو3 معترضات وتنتهي السلسلة بـ 3 أرقام

مثال تطبيقي:
"""
# جلب مكتبة التعابير المنظمة
import re
# القيم التي نريد المطابقة بها
values = ['cat100', '---200', 'xxxyyy', 'jjj', 'box4000', 'tent500']
for v in values:
    # يتطلب 3 أحرف أو 3 معترضات‎ ‎... وأيضا 3 أرقام
    # Require 3 letters OR 3 dashes.
    #... Also require 3 digits
    m = re.match('((\w{3})|([-]{3}))\d{3}$', v)
    if m:
        print 'Ok..', v
    else:
        print 'FAIL', v

"""
Output - الخرج


Ok.. cat100
Ok.. ---200
FAIL xxxyyy
FAIL jjj
FAIL box4000
FAIL tent500
"""


#re

فتح ملف مضغوط zip .. ومعرفة معلومات عن الملفات داخله

جلب مكتبة الملف المضغوط
import zipfile

إسناد المسار(سلسلة نصية) إلى متغير
path = "E://Sample.zip"

تعريف أساس التعامل مع الملف المضغوط!
File = zipfile.ZipFile(path)
----------------------------------------------------------------------------------------------
ملاحظة:: يمكن إضافة معطى parameter آخر إلى: (zipfile.ZipFile(path
فنفتح الملف في وضع القراءة ‎‏ ‏readعلى سبيل المثال فتصبح على الشكل التالي:
File = zipfile.ZipFile(path, 'r')
----------------------------------------------------------------------------------------------

الحصول على قائمة بأسماء الملفات الموجودة ضمن الملف المضغوط
NameList = File.namelist()

طباعة قائمة الملفات على الشاشة
print NameList

طباعة أسماء الملفات عاموديا ومرقمة
for number in range(len(NameList)):
    print number, '|', NameList[number]

طباعة تعريف بما سنقوم به..
print "file name and information:"

طباعة خصائص الملف، إسم الملف وتاريخ التعديل والحجم بالترتيب:
for info in File.infolist():
    print "file name: ", info.filename
    print "date of modifing: ", info.date_time
    print "size: ", info.file_size, "bytes"
    print
أمر الطباعة print لوحده يعني طباعة سطر فارغ!
----------------------------
النتائج بالترتيب:
['Sample.txt', 'Sample.jpg']
0 | Sample.txt
1 | Sample.jpg
file name and information:
file name:  Sample.txt
date of modifing:  (2014, 9, 25, 15, 17, 12)
size:  31 bytes

file name:  Sample.jpg
date of modifing:  (2011, 12, 12, 18, 19, 48)
size:  28351 bytes

#zipfile

قسمة عددين صحيحين ناتج قسمتهما هو عدد عشري

ما ستتعلمه هنا مطبق افتراضيا في بايثون 3
-------------------------------------------------------------------
في بايثون 2
#python2
من أجل قسمة عددين صحيحين ناتج قسمتهما هو عدد عشري(float) والحصول على الناتج بشكل عدد عشري دون الحاجة لوضع فاصلة لأحد أو كلا الرقمين، مثال:
>>> 5/2
2
>>> 5.0/2
2.5

جلب القسمة من مكتبة المستقبل(future)
((ملاحظة: يتم جلب هذه المكتبة في أي سطر من الأسطر الثلاث الأولى من برنامجك))
from __future__ import division

القيام بتجربة..
print 5/9

#__future__

عمليات الفصل في المسارات

جلب مكتبة النظام العملياتي(Operating System)
import os

إسناد المسار(سلسلة نصية) إلى متغير
path = "e://22.txt"

الحصول على لاحقة(امتداد) الملف بشكل منفصل
النتيجة:
(المسار+اسم الملف, الإمتداد)
print "splitext", "=>", os.path.splitext(path)

الحصول على اسم قرص التخزين منفصلا عن المسار
النتيجة:
(قرص التخزين, باق المسار)
print "splitdrive", "=>", os.path.splitdrive(path)

فصل اسم الملف عن المسار
النتيجة:
(المسار, اسم الملف+الإمتداد)
(dirname, basename)
print "split", "=>", os.path.split(path)

الحصول على اسم الملف المراد الوصول إليه في المسار المعطى
((الحصول على اسم الملف النهائي في المسار))
النتيجة:
اسم الملف+الإمتداد
print "basename", "=>", os.path.basename(path)

الحصول على المسار قبل اسم الملف المعطى في المسار
النتيجة:
المسار عدا: اسم الملف+الإمتداد
print "dirname", "=>", os.path.dirname(path)

النتيجة بالترتيب:
splitext => ('e://22', '.txt')
splitdrive => ('e:', '//22.txt')
split => ('e://', '22.txt')
basename => 22.txt
dirname => e://

#os.path

التأكد من وجود ملفات

جلب مكتبة النظام العمليّاتي ( Operating System )
import os

إسناد المسار(سلسلة نصية) إلى متغير
path = "e://22.txt"

التأكد من وجود الملف على الدليل
تعود ب صح إذا كان موجودا أو خطأ إذا لم يكن موجودا
print os.path.exists(path)

التأكد أنه فيما إذا كان الملف ملفا أم دليل
تعود ب صح إذا كان الملف ملفا أو خطأ إذا كان الملف دليلا 
print os.path.isfile(path)

التحقق من وجود دليل
print os.path.isdir(path)

#os.path