我是個C/C++ Coder,並非專業寫python的,python lua其實屬於一類語言,只不要python的庫更多,強大之處並不徹底是python語言特性,並且擴展庫比較多,請容許我黑一下python,python始終是個腳本語言,優勢缺點很明顯,做爲一個非輕量級腳本語言(與lua較之),python適合幹不少系統相關的事情。這裏就分析一下如何利用python處理文本,查找,提取。
python
假定咱們要完成這樣一個功能:搜索出指定目錄內的全部文本,取出指定位置內容,並打印行數和所在的行內容。正則表達式
遍歷目錄數據結構
列出全部的文件路徑,供回調處理,提供較好的擴展性
app
import os def enum_files_in_dir(dir_,callback_): dirlist = [] dirlist.append(dir_) while len(dirlist) > 0: curdir = dirlist.pop(len(dirlist)-1) list = os.listdir(curdir) for file in list: filepath = os.path.join(curdir,file) if os.path.isdir(filepath): dirlist.append(filepath) else: callback_(filepath)
dirlist是一個表,存儲當前文件夾集合,經過append pop來添加刪除須要遍歷的目錄,當目錄數爲零時即遍歷完畢。
ide
2. 處理文件ui
def ui_text_get_find(filepath_): file = open(filepath_,'r',encoding='gbk') i = 0 for line in file: i=i+1 result = __ui_text_id_regexobj.search(line) if result: __ui_text_result.add_text_id(locale.atoi(result.group(1))) file.close()
這個方法就是一個處理文件的回調這裏用到了正則表達式,接下來會討論這個問題。
lua
3.構建正則xml
正則表達式相關的東西,你們能夠自行百度
ci
__ui_text_id_xml_regexobj = re.compile(r'(?<=@ui_text\|)(\d+)');
這行正則能夠獲取全部相似get
@ui_text|數字
中的數字字段
若是想收集這些數字ID再處理能夠創建相應的數據結構,若是盧針對每個文本文件都生成對應的信息能夠參考目錄和文件操做,若是想添加新的處理文件的方式,能夠參考
ui_text_get_find
添加新的callback