數(shù)模心得(一)——Python進(jìn)行JSON格式文件處理

最近參加了數(shù)學(xué)建模囊蓝,在解題過程中有了一些心得抖拦,記錄一下
非常渴望能得到python大大們的指點(diǎn)幻工,非常感謝
Andrew_liu的博客對(duì)我的python學(xué)習(xí)有很大的幫助,在這里向他表示感謝

1. 文件處理步驟

  1. 利用Notepad++打開待處理文件黎茎,搜索到需要提取出的信息
  2. 分析信息在字典中的層次囊颅,采用合適方式進(jìn)行提取,主要有兩種情況:
    2.1 信息是字典中的一個(gè)序列傅瞻,利用序列名直接在字典中進(jìn)行提取
    2.2 信息是字典中某一序列的一部分踢代,分析其特征設(shè)計(jì)正則表達(dá)式進(jìn)行提取
  3. 去除其中的空數(shù)據(jù)和無效數(shù)據(jù)

注意字符的編碼格式,我是統(tǒng)一用的utf-8格式
利用異常處理可以避免文件遍歷時(shí)出現(xiàn)的中斷
JSON的object對(duì)應(yīng)python中的字典(dict)嗅骄,可以直接按照字典進(jìn)行處理

2. 實(shí)現(xiàn)的功能

  1. 在所給的JSON文件中提取出以下信息:簡(jiǎn)歷ID胳挎,性別,婚姻狀況溺森,學(xué)歷慕爬,性別,預(yù)期職位屏积,預(yù)計(jì)薪資
  2. 將所抽取的信息保存到另一個(gè)JSON文件中

3. 用到的python模塊

  1. json模塊:用于編碼和解碼JSON對(duì)象
  2. re模塊:正則表達(dá)式模塊

個(gè)人使用的python版本是3.5.1
re模塊在python標(biāo)準(zhǔn)庫中医窿,直接導(dǎo)入就好
json模塊需要利用pip安裝

4. 源代碼

輸入文件每一行的開頭都有'#RESUMEID#',利用strip()去除
輸入文件有兩個(gè)炊林,為了避免覆蓋姥卢,將寫入文件'outputJsonFile'的打開方式設(shè)為'a+'
代碼re.findall(r'"major":"(.*?)"', line, re.S)利用正則抽取專業(yè)信息
字符編碼格式為'utf-8'

import re
import json

def processJson(inputJsonFile, outputJsonFile):
  fin = open(inputJsonFile, 'r', errors='ignore',  encoding='utf-8')
  fout = open(outputJsonFile, 'a+', errors='ignore', encoding='utf-8')
  
  for eachline in fin:
    line = eachline.strip()
    line = line.strip('#RESUMEID#')
    js = None
    majorStr = re.findall(r'"major":"(.*?)"', line, re.S)
    married = re.findall(r'"married":(.*?),', line, re.S)
    
  try:
        js = json.loads(line)
  except Exception as e:
        continue

  if ((js["expectPosition"]=='') or (js["expectPosition"]=='其他') or (js["address"]=='')
        or (js["expectSalary"]=='') or (js["expectSalary"]=='面議/月')):
        continue

  if (re.search(r'"expectSalary":"([0-9]*?)-', line, re.S)):
        js["expectSalary"] = re.findall(r'"expectSalary":"(.*?)-', line, re.S)
  else:
        continue

   jsout = {"ID":js["id"] , "address":js["address"],  'gender':js["gender"],  "degree":js["degree"], 
             "major":majorStr, "married": married,"expectPosition":js["expectPosition"],
             "expectSalary":js["expectSalary"]}
    outStr = json.dumps(jsout, ensure_ascii = False)

    fout.write(outStr)
    fout.write('\n')
    fin.close()
    fout.close()

if __name__ == '__main__':
processJson('201601.txt.json', 'Q1inputData.json')
processJson('201602.txt.json', 'Q1inputData.json')  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子独榴,更是在濱河造成了極大的恐慌僧叉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件括眠,死亡現(xiàn)場(chǎng)離奇詭異彪标,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)掷豺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來薄声,“玉大人当船,你說我怎么就攤上這事∧妫” “怎么了德频?”我有些...
    開封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長缩幸。 經(jīng)常有香客問我壹置,道長,這世上最難降的妖魔是什么表谊? 我笑而不...
    開封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任钞护,我火速辦了婚禮,結(jié)果婚禮上爆办,老公的妹妹穿的比我還像新娘难咕。我一直安慰自己,他們只是感情好距辆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開白布余佃。 她就那樣靜靜地躺著,像睡著了一般跨算。 火紅的嫁衣襯著肌膚如雪爆土。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天诸蚕,我揣著相機(jī)與錄音步势,去河邊找鬼。 笑死挫望,一個(gè)胖子當(dāng)著我的面吹牛立润,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播媳板,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼桑腮,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了蛉幸?” 一聲冷哼從身側(cè)響起破讨,我...
    開封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤丛晦,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后提陶,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體烫沙,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年隙笆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了锌蓄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡撑柔,死狀恐怖瘸爽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情铅忿,我是刑警寧澤剪决,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站檀训,受9級(jí)特大地震影響柑潦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜峻凫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一渗鬼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蔚晨,春花似錦乍钻、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至累舷,卻和暖如春浩考,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背被盈。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來泰國打工析孽, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人只怎。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓袜瞬,卻偏偏與公主長得像,于是被迫代替她去往敵國和親身堡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子邓尤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器汞扎,智...
    卡卡羅2017閱讀 134,652評(píng)論 18 139
  • python學(xué)習(xí)筆記 聲明:學(xué)習(xí)筆記主要是根據(jù)廖雪峰官方網(wǎng)站python學(xué)習(xí)學(xué)習(xí)的季稳,另外根據(jù)自己平時(shí)的積累進(jìn)行修正...
    renyangfar閱讀 3,043評(píng)論 0 10
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,574評(píng)論 1 118
  • 此日,鐘馗化作生人模樣走路澈魄,爬山涉河景鼠,來到一境,只見前方一個(gè)小村莊有陰氣籠罩痹扇,似為不詳铛漓。恰逢路上遇見一路人,便逮住...
    大why閱讀 1,200評(píng)論 0 8
  • 六月十八號(hào)鲫构,是一年一度的父親節(jié)票渠。這一天,對(duì)于我來說是沉重的芬迄,更是珍貴的。因?yàn)槲也恢老履甑倪@個(gè)時(shí)候昂秃,父親是否還能如...
    一滴露水閱讀 392評(píng)論 21 13