我是个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