在正文中提取有實際意義的數字

2022-07-12 05:30:12 字數 3073 閱讀 8788

溶鄉山多人少,人均稻田面積僅有0.6畝,農產品以水稻為主,雜糧有玉公尺、紅薯、高粱、蕎類等,經濟作物有黃豆、菜油。林業用地43萬畝,佔總面積的76.4%,森林蓄積量達94萬立方公尺,以林業的振興發展拉動全鄉經濟發展是北溶鄉黨委**歷來堅定不移的發展思路,目前已申報國家級公益林18.7畝。近年來退耕還林面積1.3萬畝,每年林農享受退耕還林國家補助近210萬元。

這其中的想表達的數字有:

人均稻田面積0.6畝

林業用地43萬畝

總面積的76.4%

森林蓄積量達94萬立方公尺

已申報國家級公益林18.7畝

退耕還林面積1.3萬畝

退耕還林國家補助近210萬元

這裡面可以看到想要表達乙個數字含義還需要有名稱,用來表示這個數字是幹什麼用的。可能的話還必須要有單位和量詞,例如國家補助210,這裡表示的是人數還是錢。

這裡介紹乙個不過的python外掛程式jieba(結巴),不僅可以用來分詞,還可以顯示出當前分詞的詞性(名詞,動詞,量詞...)。

外掛程式安裝很簡單,可以直接pip install jieba,當前的版本是jieba-0.38。我用的是python2.7.10,對python3也是支援的。使用如下:

import

jieba.posseg as pseg

if__name__ == '

__main__':

pass

words=u"

溶鄉山多人少,人均稻田面積僅有0.6畝

"cut_list=

for cuts in

pseg.cut(words):

print cuts.word+"

\t"+cuts.flag

結果:

溶鄉    n

山 n

多 m

人 n

少 a

, x

人均 j

稻田 n

面積 n

僅 d

有 v

0.6m

畝 m

如此再回到之前的思路,可以對整段文字進行分詞,然後用正則過濾出純數字出來。針對於每個數字,向前找名詞(一句裡找不到名詞就丟棄這個數字),向後找量詞,這樣就能夠把整段文字有實際意義的數字給提取出來。

#

!/usr/local/bin/python

#-*- coding: utf8 -*-

'''created on 2023年6月17日

@author: paololiu

'''import

reimport

jieba.posseg as pseg

if__name__ == '

__main__':

pass

words=u"

溶鄉山多人少,人均稻田面積僅有0.6畝,農產品以水稻為主,雜糧有玉公尺、紅薯、高粱、蕎類等,經濟作物有黃豆、菜油。林業用地43萬畝,佔總面積的76.4%,森林蓄積量達94萬立方公尺,以林業的振興發展拉動全鄉經濟發展是北溶鄉黨委**歷來堅定不移的發展思路,目前已申報國家級公益林18.7畝。近年來退耕還林面積1.3萬畝,每年林農享受退耕還林國家補助近210萬元。2023年起,境內大規模營造速生豐產林,「十一五」期間規劃營造3800畝速生豐產林,15年後全鄉林農創收可達1800萬元。鄉內碣灘茶在唐朝曾為貢品,自2023年後多次被評為湖南省優質茶,2023年被評為全國部優產品,2023年獲國際茶文化節金獎。礦藏以金、銀、銅、鐵、鉛、汞、重晶石最為豐富,其中重晶石儲藏量在1000萬噸以上,礦質優良,年產量8萬噸,年銷售收入1040萬元,年上交稅收83.2萬元,年利潤395萬元。養殖條件好,有大量庫汊水域,可成規模養魚;草場面積較大,適合山羊、黃牛養殖。2023年全鄉山羊達4525只,年底存欄3028只,出欄1497只。鄉境經濟發展將以林業、茶葉、重晶石開採加工、養殖業為四大支柱產業,帶動境內經濟全面發展,同時發展對外勞務輸出。

"cut_list=

for cuts in

pseg.cut(words):

#print cuts.word+"\t"+cuts.flag

for i in

range (0,len(cut_list)):

re_string="

^(-?\\d+)(\\.\\d+)?$"if

re.match(re_string,cut_list[i][0]):

pass

noun=""

for j in range (i,-1,-1):

if cut_list[j][1]=="x"

:

breakif"

n"in cut_list[j][1] or cut_list[j][1]=='j'

: noun=cut_list[j][0]+noun

if noun==""

:

continue

number=cut_list[i][0]

measure_word=""

if cut_list[i+1]:

if (cut_list[i+1][1]=="

m") or (cut_list[i+1][1]=="x"

and cut_list[i+1][0]=="%"

):#print cut_list[i+1][0]

measure_word=cut_list[i+1][0]

print noun+number+measure_word

輸出後的結果:

人均稻田面積0.6畝

林業用地43萬畝

總面積76.4%森林蓄積量94萬立方公尺

申報公益林18.7畝

面積1.3萬畝

林農國家210萬元

規劃營造3800畝

全鄉林農1800萬元

重晶石儲藏量1000萬噸

銷售收入1040萬元

稅收83.2萬元

利潤395萬元

全鄉山羊4525

存欄3028

這樣的資料再進行一定的取捨便就能夠用於結構化的資料分析了

在 Workbench中提取和使用日誌資訊

在啟動和關閉 python 位於workbench 中工作空間引數 advanced 中 中可以使用 fmeobjects python api 與pythoncaller 和pythoncreator 一樣。其中乙個可用的物件是 fmelogfile 它提供了訪問 workbench 日誌的功能。...

用R在字串中提取匹配的部分

例如在aaaa12 x中提取12,在參考了stackoverflow後比較方便的大致有以下幾種方法 利用sub跟gsub sub 0 9 1 aaa12xx99 perl true 其中 1指括號中匹配的部分 gsub 0 9 aaa12 x regmatchs法 txt aaa12 m regex...

在OpenCV中提取水平直線,垂直直線和一些字元

imshow 原影象 src 首先要獲取原始檔,方便進行操作。將原影象轉換成灰度影象 將灰度影象轉換成二值影象 mat binaryimage adaptivethreshold grayimage,binaryimage,255,adaptive thresh mean c,thresh bina...