全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
968 0
2020-07-25
从国家统计局网站上对统计公报进行爬取各地市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个百分点。"   

   
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群