鱼C论坛

 找回密码
 立即注册
查看: 677|回复: 6

这段代码用python怎么实现?

[复制链接]
发表于 2019-4-28 16:22:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 laoliuya 于 2019-4-28 16:28 编辑


  1. $ grep -Po '[A-Z\d\(\)()&\p{Han}]+(\d+(\.\d)?(亿元|亿|万元|元)|\d{1,2}(\.\d{1,2})?%(?!、)|:?(\d{1,2}(\.\d{1,2})?%、){1,2}\d{1,2}(\.\d{1,2})?%和\d{1,2}(\.\d{1,2})?%)' file.txt
复制代码

功能是
从下面的文档中提取类似经费方面的数据,比如 科技活动经费 筹集 1460.6亿元       增加  170.9亿元 增长率 2.5%  这之类的数据

示例文档:

“1999年全国科技经费投入统计公报
国家统计局  科学技术部  财 政 部
    1999年,我国科技经费投入出现快速增长势头,中央财政对科技活动的资金扶持力度继续加大,企业技术开发特别是新产品开发投入增长较快,研究与试验发展(R&D)经费支出占国内生产总值(GDP)的比重首次超过0.8%。
一、科技经费筹集
    1999年全国共筹集科技活动经费1460.6亿元,比上年增加170.9亿元,同口径增长12.5%。按总人口计算的全国人均科技活动经费筹集额116元,比上年增加12.7元。
    1999年国家财政科技拨款额达543.9亿元,比上年增加105.3亿元,实际增长26.8%,科技拨款占国家财政支出的比重为4.1%。在国家财政科技拨款中,中央财政和地方财政的拨款均增长较快,其中中央财政科技拨款占中央财政支出的比重为8.6%,地方财政科技拨款占地方财政支出的比重为2.1%。
表1.  1999年财政科技拨款情况
        财政科技拨款额   (亿元)        实际增长    %        占拨款总额      的比重%
  合      计        543.9        26.8         —
  其中:科学事业费        168.1        13.2         30.9
        科技三项费        272.8        46.9         50.2
        科研基建费        52.9        14.4         9.7
  其中:中央        355.6        25.5         65.4
        地方        188.3        29.3         34.6
二、科技经费使用
    1999年科技活动经费支出总额为1284.9亿元,比上年增加156.5亿元,同口径增长13%。
    分执行部门看,企业支出654.6亿元,比上年同口径增长16.6%;研究与开发机构支出496.9亿元,增长9.4%;高等学校支出85.1亿元,增长16.3%。各执行部门支出占全部科技经费支出的比重分别为50.9%、38.7%和6.6%。
    作为技术创新主体的大中型工业企业,科技经费支出增长较快,全年技术开发经费支出567.2亿元,比上年增加88.6亿元,增长18.5%。其中用于新产品开发支出304.6亿元,比上年增加59.4亿元,增长24.2%。
    从支出用途看,劳务费支出270.2亿元,比上年同口径增长12.7%;业务费支出434.8亿元,增长16.1%;固定资产购建支出357.4亿元,增长15.7%;其他支出222.5亿元,增长3.9%。各种用途支出占支出总额的比重分别为:21.0%、33.9%、27.8%和17.3%。
    分地区看,科技经费支出额排前5位的地区为:北京、上海、江苏、广东和山东,5个地区支出额合计达到610亿元,占各省科技经费支出合计的51.6%;科技经费增长幅度在全国平均水平以上的有:北京、河北、内蒙古、安徽、福建、江西、山东、湖北、湖南、广东、海南、贵州、宁夏和新疆。
输出结果:
  1. 研究与试验发展(R&D)经费支出占国内生产总值(GDP)的比重首次超过0.8%
  2. 1999年全国共筹集科技活动经费1460.6亿元
  3. 比上年增加170.9亿元
  4. 同口径增长12.5%
  5. 按总人口计算的全国人均科技活动经费筹集额116元
  6. 比上年增加12.7元
  7. 1999年国家财政科技拨款额达543.9亿元
  8. 比上年增加105.3亿元
  9. 实际增长26.8%
  10. 科技拨款占国家财政支出的比重为4.1%
  11. 其中中央财政科技拨款占中央财政支出的比重为8.6%
  12. 地方财政科技拨款占地方财政支出的比重为2.1%
  13. 1999年科技活动经费支出总额为1284.9亿元
  14. 比上年增加156.5亿元
  15. 同口径增长13%
  16. 企业支出654.6亿元
  17. 比上年同口径增长16.6%
  18. 研究与开发机构支出496.9亿元
  19. 增长9.4%
  20. 高等学校支出85.1亿元
  21. 增长16.3%
  22. 各执行部门支出占全部科技经费支出的比重分别为50.9%、38.7%和6.6%
  23. ......
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-4-28 16:23:34 | 显示全部楼层
这是查找 还是替换 啊  你倒是说明白一些啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-28 16:28:55 | 显示全部楼层
wp231957 发表于 2019-4-28 16:23
这是查找 还是替换 啊  你倒是说明白一些啊

修改了下贴子,现在说得比较明白了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-28 21:52:29 | 显示全部楼层
其实,你这段文本 比较复杂,也不是非要用正则   用字符串也能搞个七七八八:

  1. # coding: utf-8
  2. import re,os

  3. if __name__=="__main__":
  4.     fo = open("123.txt", "r",encoding="utf-8").read()
  5.     t=fo.split(",")
  6.     lst=[]
  7.     for m in t:
  8.       t2=m.split(" ")
  9.       for x in t2:
  10.         if x.find("。")>=0:
  11.           t3=x.split("。")
  12.           for tt1 in  t3:
  13.             lst.append(tt1)
  14.         elif x.find(":")>=0:
  15.           t4=x.split(":")
  16.           for tt2 in  t4:
  17.             lst.append(tt2)
  18.         elif x.find(";")>=0:   
  19.           t5=x.split(";")
  20.           for tt3 in  t5:
  21.             lst.append(tt3)
  22.         else:
  23.           lst.append(x)
  24.     for z in lst:
  25.       if z!='':
  26.         y2=re.findall("\d",z)
  27.         y3=re.findall(u"[\u4e00-\u9fa5]",z)
  28.         if y2 and y3:
  29.            print(z)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-28 21:53:03 | 显示全部楼层
e:\>python ex14.py
“1999年全国科技经费投入统计公报

1999年
研究与试验发展(R&D)经费支出占国内生产总值(GDP)的比重首次超过0.8%
1999年全国共筹集科技活动经费1460.6亿元
比上年增加170.9亿元
同口径增长12.5%
按总人口计算的全国人均科技活动经费筹集额116元
比上年增加12.7元
1999年国家财政科技拨款额达543.9亿元
比上年增加105.3亿元
实际增长26.8%
科技拨款占国家财政支出的比重为4.1%
其中中央财政科技拨款占中央财政支出的比重为8.6%
地方财政科技拨款占地方财政支出的比重为2.1%
表1.
1999年财政科技拨款情况

1999年科技活动经费支出总额为1284.9亿元
比上年增加156.5亿元
同口径增长13%
企业支出654.6亿元
比上年同口径增长16.6%
研究与开发机构支出496.9亿元
增长9.4%
高等学校支出85.1亿元
增长16.3%
各执行部门支出占全部科技经费支出的比重分别为50.9%、38.7%和6.6%
全年技术开发经费支出567.2亿元
比上年增加88.6亿元
增长18.5%
其中用于新产品开发支出304.6亿元
比上年增加59.4亿元
增长24.2%
劳务费支出270.2亿元
比上年同口径增长12.7%
业务费支出434.8亿元
增长16.1%
固定资产购建支出357.4亿元
增长15.7%
其他支出222.5亿元
增长3.9%
各种用途支出占支出总额的比重分别为:21.0%、33.9%、27.8%和17.3%
科技经费支出额排前5位的地区为
5个地区支出额合计达到610亿元
占各省科技经费支出合计的51.6%;科技经费增长幅度在全国平均水平以上的有:北京、河北、内蒙古、安徽、福建、江西、山东、湖北、湖南、广东、海南、贵州、宁夏和新疆
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-29 20:23:06 | 显示全部楼层
本帖最后由 咕咕鸡鸽鸽 于 2019-4-29 20:34 编辑

贪婪匹配还是不太会用,我的算法有缺陷orz
  1. import re

  2. def fun(str1):
  3.     str2 = re.sub(r'\s','',str1)
  4.     get = re.findall(r'[,。;].*?\d+?\.?\d*?亿?[元%]',str2,re.S)
  5.     get = list(map(lambda x:x[1:].split(',')[-1],get))
  6.     return get


  7. str1='''
  8. 1999年全国科技经费投入统计公报
  9. 国家统计局  科学技术部  财 政 部
  10.     1999年,我国科技经费投入出现快速增长势头,中央财政对科技活动的资金扶持力度继续加大,企业技术开发特别是新产品开发投入增长较快,研究与试验发展(R&D)经费支出占国内生产总值(GDP)的比重首次超过0.8%。
  11. 一、科技经费筹集
  12.     1999年全国共筹集科技活动经费1460.6亿元,比上年增加170.9亿元,同口径增长12.5%。按总人口计算的全国人均科技活动经费筹集额116元,比上年增加12.7元。
  13.     1999年国家财政科技拨款额达543.9亿元,比上年增加105.3亿元,实际增长26.8%,科技拨款占国家财政支出的比重为4.1%。在国家财政科技拨款中,中央财政和地方财政的拨款均增长较快,其中中央财政科技拨款占中央财政支出的比重为8.6%,地方财政科技拨款占地方财政支出的比重为2.1%。
  14. 表1.  1999年财政科技拨款情况
  15.         财政科技拨款额   (亿元)        实际增长    %        占拨款总额      的比重%
  16.   合      计        543.9        26.8         —
  17.   其中:科学事业费        168.1        13.2         30.9
  18.         科技三项费        272.8        46.9         50.2
  19.         科研基建费        52.9        14.4         9.7
  20.   其中:中央        355.6        25.5         65.4
  21.         地方        188.3        29.3         34.6
  22. 二、科技经费使用
  23.     1999年科技活动经费支出总额为1284.9亿元,比上年增加156.5亿元,同口径增长13%。
  24.     分执行部门看,企业支出654.6亿元,比上年同口径增长16.6%;研究与开发机构支出496.9亿元,增长9.4%;高等学校支出85.1亿元,增长16.3%。各执行部门支出占全部科技经费支出的比重分别为50.9%、38.7%和6.6%。
  25.     作为技术创新主体的大中型工业企业,科技经费支出增长较快,全年技术开发经费支出567.2亿元,比上年增加88.6亿元,增长18.5%。其中用于新产品开发支出304.6亿元,比上年增加59.4亿元,增长24.2%。
  26.     从支出用途看,劳务费支出270.2亿元,比上年同口径增长12.7%;业务费支出434.8亿元,增长16.1%;固定资产购建支出357.4亿元,增长15.7%;其他支出222.5亿元,增长3.9%。各种用途支出占支出总额的比重分别为:21.0%、33.9%、27.8%和17.3%。
  27.     分地区看,科技经费支出额排前5位的地区为:北京、上海、江苏、广东和山东,5个地区支出额合计达到610亿元,占各省科技经费支出合计的51.6%;科技经费增长幅度在全国平均水平以上的有:北京、河北、内蒙古、安徽、福建、江西、山东、湖北、湖南、广东、海南、贵州、宁夏和新疆。
  28. '''

  29. print(fun(str1))
复制代码


输出结果如下:
  1. ['研究与试验发展(R&D)经费支出占国内生产总值(GDP)的比重首次超过0.8%', '一、科技经费筹集1999年全国共筹集科技活动经费1460.6亿元', '比上年增加170.9亿元', '同口径增长12.5%', '按总人口计算的全国人均科技活动经费筹集额116元', '比上年增加12.7元', '1999年国家财政科技拨款额达543.9亿元', '比上年增加105.3亿元', '实际增长26.8%', '科技拨款占国家财政支出的比重为4.1%', '其中中央财政科技拨款占中央财政支出的比重为8.6%', '地方财政科技拨款占地方财政支出的比重为2.1%', '表1.1999年财政科技拨款情况财政科技拨款额(亿元)实际增长%占拨款总额的比重%合计543.926.8—其中:科学事业费168.113.230.9科技三项费272.846.950.2科研基建费52.914.49.7其中:中央355.625.565.4地方188.329.334.6二、科技经费使用1999年科技活动经费支出总额为1284.9亿元', '比上年增加156.5亿元', '同口径增长13%', '企业支出654.6亿元', '比上年同口径增长16.6%', '研究与开发机构支出496.9亿元', '增长9.4%', '高等学校支出85.1亿元', '增长16.3%', '各执行部门支出占全部科技经费支出的比重分别为50.9%', '全年技术开发经费支出567.2亿元', '比上年增加88.6亿元', '增长18.5%', '其中用于新产品开发支出304.6亿元', '比上年增加59.4亿元', '增长24.2%', '劳务费支出270.2亿元', '比上年同口径增长12.7%', '业务费支出434.8亿元', '增长16.1%', '固定资产购建支出357.4亿元', '增长15.7%', '其他支出222.5亿元', '增长3.9%', '各种用途支出占支出总额的比重分别为:21.0%', '5个地区支出额合计达到610亿元', '占各省科技经费支出合计的51.6%']
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-4-30 14:11:11 | 显示全部楼层
咕咕鸡鸽鸽 发表于 2019-4-29 20:23
贪婪匹配还是不太会用,我的算法有缺陷orz

很厉害,谢谢大佬!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-15 13:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表