从国家统计局网站上对统计公报进行爬取各地市GDP指标数值,碰到正则表达式问题,想请教论坛里高手如何解决 。从字符串提取数值应该如何写正则表达式比较好
统计公告示例:http://www.tjcn.org/tjgb/09sh/35333.html,http://www.tjcn.org/tjgb/03hb/36482.html
开始,在高人指点下成功拿到数据,
url<- "http://www.tjcn.org/tjgb/03hb/36482.html"
web = read_html(url,encoding="gbk'")
text = web %>% html_nodes("div")%>% html_text()
text = noquote(text)
text<-grep('市生产总值',text,value=T)
gdp=gsub('(.+)(市生产总值完成)([0-9]+.[0-9]+)(.+)',"\\3",text)
gdp=gdp[1]
但后来发现不是所有的地市都这么写“全年全市生产总值完成3224.0亿元”,不同地市写法差别很大:
全年实现上海市生产总值(GDP)30133.86亿元
全市生产总值实现1506.01亿元,
全市生产总值实现1506.01亿元,
还有地市不提供具体数值,“全市生产总值按可比价格计算比上年增长5.5%”。
于是先后改成以下几种形式, 都没有成功。
gdp=gsub'(.+)(市生产总值+)([0-9]+.[0-9]+)(亿元+)',"\\3",text)
gdp=gsub('(.*市.*生产总值.+)([0-9]+\.[0-9]+亿元)(.+)',"\\2",text)
gdp=gsub('(.*市.*生产总值.+)([[0-9](4}.[0-9]*亿元)(.+)',"\\2",text)
失败结果
[1] "初步核算,全年全市生产总值完成3224.0亿元,比上年增长6.7%。其中,第一产业增加值349.8亿元,增长2.0%;第二产业增加值1107.5亿元,增长3.3%;第三产业增加值1766.7亿元,增长10.1%。三次产业结构为10.8:34.4:54.8。全市人均生产总值34374元,比上年增长6.3%。"
[2] "全市民营经济增加值完成2218.1亿元,比上年增长7.2%,占全市生产总值的比重为68.8%,提高0.8个百分点。"