教你利用python处理文本
我是個(gè)C/C++ Coder,并不是專(zhuān)業(yè)寫(xiě)python的,python lua其實(shí)屬于一類(lèi)語(yǔ)言,只不要python的庫(kù)更多,強(qiáng)大之處并不完全是python語(yǔ)言特性,而且擴(kuò)展庫(kù)比較多,請(qǐng)?jiān)试S我黑一下python,python始終是個(gè)腳本語(yǔ)言,優(yōu)點(diǎn)缺點(diǎn)很明顯,作為一個(gè)非輕量級(jí)腳本語(yǔ)言(與lua較之),python適合干很多系統(tǒng)相關(guān)的事情。這里就分析一下如何利用python處理文本,查找,提取。
假定我們要完成這樣一個(gè)功能:搜索出指定目錄內(nèi)的所有文本,取出指定位置內(nèi)容,并打印行數(shù)和所在的行內(nèi)容。
遍歷目錄
? 列出所有的文件路徑,供回調(diào)處理,提供較好的擴(kuò)展性
????
import?osdef?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是一個(gè)表,存儲(chǔ)當(dāng)前文件夾集合,通過(guò)append pop來(lái)添加刪除需要遍歷的目錄,當(dāng)目錄數(shù)為零時(shí)即遍歷完畢。
2. 處理文件
????
def?ui_text_get_find(filepath_):file?=?open(filepath_,'r',encoding='gbk')i?=?0for?line?in?file:i=i+1result?=?__ui_text_id_regexobj.search(line)if?result:__ui_text_result.add_text_id(locale.atoi(result.group(1)))file.close()????這個(gè)方法就是一個(gè)處理文件的回調(diào)這里用到了正則表達(dá)式,接下來(lái)會(huì)討論這個(gè)問(wèn)題。
3.構(gòu)建正則
????正則表達(dá)式相關(guān)的東西,大家可以自行百度
????
__ui_text_id_xml_regexobj?=?re.compile(r'(?<=@ui_text\|)(\d+)');????這行正則可以獲取所有類(lèi)似
@ui_text|數(shù)字????中的數(shù)字字段
?如果想收集這些數(shù)字ID再處理可以建立相應(yīng)的數(shù)據(jù)結(jié)構(gòu),如果盧針對(duì)每一個(gè)文本文件都生成對(duì)應(yīng)的信息可以參考目錄和文件操作,如果想添加新的處理文件的方式,可以參考
ui_text_get_find添加新的callback
轉(zhuǎn)載于:https://blog.51cto.com/bhlzlx/1613980
總結(jié)
以上是生活随笔為你收集整理的教你利用python处理文本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Three.js的绘制流程(三)----
- 下一篇: 查看selenium python的ap