免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2500 | 回复: 13
打印 上一主题 下一主题

[文本处理] 字符串提取问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-07-02 16:19 |只看该作者 |倒序浏览


题干+选项
<div>【题文】把x<sup>2</sup>y﹣2y<sup>2</sup>x+y<sup>3</sup>分解因式正确的是<table name="optionsTable" cellpadding="0" cellspacing="0" width="100%"><tr><td width="25%">A.y(x<sup>2</sup>﹣2xy+y<sup>2</sup>)</td><td width="25%">B.x<sup>2</sup>y﹣y<sup>2</sup>(2x﹣y)</td><td width="25%">C.y(x﹣y)<sup>2</sup></td><td width="25%">D.y(x+y)<sup>2</sup></td></tr></table></div>

要求:提取后为分为两列 题干和 选项,选项的格式需要单独处理成json格式,最后对选项的值做base64加密。

提取后题干列如下

<div>【题文】把x<sup>2</sup>y﹣2y<sup>2</sup>x+y<sup>3</sup>分解因式正确的是</div>



选项 :提取后如下(optinos自身是key), 值分别对应 abcd4个选项内容)

[{"option" : "y(x<sup>2</sup>﹣2xy+y<sup>2</sup>)"},{"option" : "x<sup>2</sup>y﹣y<sup>2</sup>(2x﹣y)"},{"option" : "y(x﹣y)<sup>2</sup>"},{"option" : "(x+y)<sup>2</sup>“}]



选项值base64加密 后的值
[{"option" : "ee+8iHg8c3VwPjI8L3N1cD7vuaMyeHkreTxzdXA+Mjwvc3VwPu+8iQ=="},{"option" : "eDxzdXA+Mjwvc3VwPnnvuaN5PHN1cD4yPC9zdXA+77yIMnjvuaN577yJ"},{"option" : "ee+8iHjvuaN577yJPHN1cD4yPC9zdXA+"},{"option" : "77yIeCt577yJPHN1cD4yPC9zdXA+}]

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
2 [报告]
发表于 2015-07-02 17:03 |只看该作者
脑子转不动了

论坛徽章:
3
水瓶座
日期:2014-03-25 17:08:042015亚冠之塔什干棉农
日期:2015-08-10 10:45:122015亚冠之萨济拖拉机
日期:2015-08-13 16:05:24
3 [报告]
发表于 2015-07-02 17:22 |只看该作者
题目就看晕了

论坛徽章:
780
金牛座
日期:2014-02-26 17:49:58水瓶座
日期:2014-02-26 18:10:15白羊座
日期:2014-04-15 19:29:52寅虎
日期:2014-04-17 19:43:21酉鸡
日期:2014-04-19 21:24:10子鼠
日期:2014-04-22 13:55:24卯兔
日期:2014-04-22 14:20:58亥猪
日期:2014-04-22 16:13:09狮子座
日期:2014-05-05 22:31:17摩羯座
日期:2014-05-06 10:32:53处女座
日期:2014-05-12 09:23:11子鼠
日期:2014-05-21 18:21:27
4 [报告]
发表于 2015-07-02 17:51 |只看该作者
信息量略大,等楼下的大神吧

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
5 [报告]
发表于 2015-07-02 18:00 |只看该作者
本帖最后由 haooooaaa 于 2015-07-02 18:08 编辑

回复 1# steveq1

还有问题,再研究一下 , 换行不知道如何折腾
  1. $ awk -F "[..]" '{split($1,t,"<table");print t[1]"</div>";for(i=2;i<=NF;i++){split($i,m,"</td>");if(i==2){printf "[{\"option\" : \""};printf m[1]|"base64";close("base64");printf ab;if(i<NF){printf "\"},{\"option\" : \""}else{printf "\"}]"}}}' 1.txt
  2. <div>【题文】把x<sup>2</sup>y﹣2y<sup>2</sup>x+y<sup>3</sup>分解因式正确的是</div>
  3. [{"option" : "ee+8iHg8c3VwPjI8L3N1cD7vuaMyeHkreTxzdXA+Mjwvc3VwPu+8iQ==
  4. "},{"option" : "eDxzdXA+Mjwvc3VwPnnvuaN5PHN1cD4yPC9zdXA+77yIMnjvuaN577yJ
  5. "},{"option" : "ee+8iHjvuaN577yJPHN1cD4yPC9zdXA+
  6. "},{"option" : "ee+8iHgree+8iTxzdXA+Mjwvc3VwPg==
  7. "}]
复制代码

论坛徽章:
0
6 [报告]
发表于 2015-07-02 19:26 |只看该作者
本帖最后由 steveq1 于 2015-07-02 19:34 编辑

回复 5# haooooaaa


    谢谢  这道题解析出来了, 换行有点问题,另外题干和选项是两列目前还是在一列中 ,

我用您的脚本执行时,有些题目还是有些问题 比如 option出现了多次,另外题干的图片被截断(这边题目题干和选项包含的有 数字 字母 符号 公式 图片url 等)

<div>【题文】把抛物线<img src="Upload/2013-08/08/54e957a4-bc05-413e-bf53-c151a52ecc3f/paper.files/image018.png" style="vertical-align:middle;" />先向右平移1个单位,再向下平移2个单位,得到的抛物线的解析式为<table name="optionsTable" cellpadding="0" cellspacing="0" width="100%"><tr><td width="50%">A.<img src="Upload/2013-08/08/54e957a4-bc05-413e-bf53-c151a52ecc3f/paper.files/image019.png" style="vertical-align:middle;" /></td><td width="50%">B.<img src="Upload/2013-08/08/54e957a4-bc05-413e-bf53-c151a52ecc3f/paper.files/image020.png" style="vertical-align:middle;" /></td></tr><tr><td width="50%">C.<img src="Upload/2013-08/08/54e957a4-bc05-413e-bf53-c151a52ecc3f/paper.files/image021.png" style="vertical-align:middle;" /></td><td width="50%">D.<img src="Upload/2013-08/08/54e957a4-bc05-413e-bf53-c151a52ecc3f/paper.files/image022.png" style="vertical-align:middle;" /></td></tr></table></div>
  1. <div>【题文】把抛物线<img src="Upload/2013-08/08/54e957a4-bc05-413e-bf53-c151a52ecc3f/paper</div>
  2.   29 [{"option" : "ZmlsZXMvaW1hZ2UwMTg=
  3.   30 "},{"option" : "cG5nIiBzdHlsZT0idmVydGljYWwtYWxpZ246bWlkZGxlOyIgLz7lhYjlkJHlj7PlubPnp7sx5Liq
  4.   31 5Y2V5L2N77yM5YaN5ZCR5LiL5bmz56e7MuS4quWNleS9je+8jOW+l+WIsOeahOaKm+eJqee6v+ea
  5.   32 hOino+aekOW8j+S4ujx0YWJsZSBuYW1lPSJvcHRpb25zVGFibGUiIGNlbGxwYWRkaW5nPSIwIiBj
  6.   33 ZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPjx0cj48dGQgd2lkdGg9IjUwJSI+QQ==
  7.   34 "},{"option" : "PGltZyBzcmM9IlVwbG9hZC8yMDEzLTA4LzA4LzU0ZTk1N2E0LWJjMDUtNDEzZS1iZjUzLWMxNTFh
  8.   35 NTJlY2MzZi9wYXBlcg==
  9.   36 "},{"option" : "ZmlsZXMvaW1hZ2UwMTk=
  10.   37 "},{"option" : "cG5nIiBzdHlsZT0idmVydGljYWwtYWxpZ246bWlkZGxlOyIgLz4=
  11.   38 "},{"option" : "PGltZyBzcmM9IlVwbG9hZC8yMDEzLTA4LzA4LzU0ZTk1N2E0LWJjMDUtNDEzZS1iZjUzLWMxNTFh
  12.   39 NTJlY2MzZi9wYXBlcg==
  13.   40 "},{"option" : "ZmlsZXMvaW1hZ2UwMjA=
  14.   41 "},{"option" : "cG5nIiBzdHlsZT0idmVydGljYWwtYWxpZ246bWlkZGxlOyIgLz4=
  15.   42 "},{"option" : "PGltZyBzcmM9IlVwbG9hZC8yMDEzLTA4LzA4LzU0ZTk1N2E0LWJjMDUtNDEzZS1iZjUzLWMxNTFh
  16.   43 NTJlY2MzZi9wYXBlcg==
  17.   44 "},{"option" : "ZmlsZXMvaW1hZ2UwMjE=
  18.   45 "},{"option" : "cG5nIiBzdHlsZT0idmVydGljYWwtYWxpZ246bWlkZGxlOyIgLz4=
  19.   46 "},{"option" : "PGltZyBzcmM9IlVwbG9hZC8yMDEzLTA4LzA4LzU0ZTk1N2E0LWJjMDUtNDEzZS1iZjUzLWMxNTFh
  20.   47 NTJlY2MzZi9wYXBlcg==
  21.   48 "},{"option" : "ZmlsZXMvaW1hZ2UwMjI=
  22.   49 "},{"option" : "cG5nIiBzdHlsZT0idmVydGljYWwtYWxpZ246bWlkZGxlOyIgLz4=
  23.   50 "}]
复制代码

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
7 [报告]
发表于 2015-07-02 19:53 |只看该作者
回复 6# steveq1


    刚才的换行搞定了, 不过效率不高, 估计方法不正确
  1. $ awk -F "[..]" '{split($1,t,"<table");printf t[1]"</div>\t";for(i=2;i<=NF;i++){split($i,m,"</td>");if(i==2){printf "[{\"option\" : \""};printf m[1]|"base64>a";close("base64>a");getline ab<"a";close("a");"rm -f a";close("rm -f a");printf ab;if(i<NF){printf "\"},{\"option\" : \""}else{printf "\"}]"}}}' 2.txt
  2. <div>【题文】把x<sup>2</sup>y﹣2y<sup>2</sup>x+y<sup>3</sup>分解因式正确的是</div>      [{"option" : "ee+8iHg8c3VwPjI8L3N1cD7vuaMyeHkreTxzdXA+Mjwvc3VwPu+8iQ=="},{"option" : "eDxzdXA+Mjwvc3VwPnnvuaN5PHN1cD4yPC9zdXA+77yIMnjvuaN577yJ"},{"option" : "ee+8iHjvuaN577yJPHN1cD4yPC9zdXA+"},{"option" : "ee+8iHgree+8iTxzdXA+Mjwvc3VwPg=="}]
复制代码

论坛徽章:
54
2015亚冠之德黑兰石油
日期:2015-07-07 13:00:1615-16赛季CBA联赛之深圳
日期:2016-03-31 09:03:5415-16赛季CBA联赛之辽宁
日期:2016-05-09 20:38:15程序设计版块每日发帖之星
日期:2016-05-12 06:20:0015-16赛季CBA联赛之四川
日期:2016-05-13 15:19:4715-16赛季CBA联赛之福建
日期:2016-05-15 20:24:34每日论坛发贴之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之吉林
日期:2016-05-26 11:49:4715-16赛季CBA联赛之广东
日期:2016-05-26 13:49:18极客徽章
日期:2016-12-07 14:05:2315-16赛季CBA联赛之广夏
日期:2016-12-20 17:33:532017金鸡报晓
日期:2017-01-10 15:19:56
8 [报告]
发表于 2015-07-02 20:24 |只看该作者
本帖最后由 haooooaaa 于 2015-07-02 20:32 编辑

回复 6# steveq1

这个快多了, 瞬间搞定
  1. #!/usr/bin/evn python
  2. #-*- coding:utf-8 -*-

  3. import base64

  4. def convf(filename, sep1, sep2):
  5.     tmp = []
  6.     with open(filename) as f:
  7.         for i in f:
  8.             tmp.append(i.split(sep1)[0])
  9.             for j in i.split(sep1)[-1].split(sep2)[1:]: #sep1: <table sep2: .
  10.                 if "img src=" in j:
  11.                     tmp.append(base64.encodestring(j.split('"')[1])[0:-1])
  12.                 #elif "url" in j:   
  13.                 #    tmp.append(base64.encodestring(j.split('"')[1])[0:-1])
  14.                 else:
  15.                     tmp.append(base64.encodestring(j.split("</td>")[0])[0:-1])

  16.     s = '%s</div>\t[{"option" : "' % tmp[0]
  17.     return s + '"},{"option" : "'.join(tmp[1:]) + '"}]'

  18. print convf("3.txt",'<table','.')
复制代码
  1. $ python 33.py
  2. <div>【题文】把x<sup>2</sup>y﹣2y<sup>2</sup>x+y<sup>3</sup>分解因式正确的是</div>      [{"option" : "ee+8iHg8c3VwPjI8L3N1cD7vuaMyeHkreTxzdXA+Mjwvc3VwPu+8iQ=="},{"option" : "eDxzdXA+Mjwvc3VwPnnvuaN5PHN1cD4yPC9zdXA+77yIMnjvuaN577yJ"},{"option" : "ee+8iHjvuaN577yJPHN1cD4yPC9zdXA+"},{"option" : "ee+8iHgree+8iTxzdXA+Mjwvc3VwPg=="}]
复制代码

评分

参与人数 1信誉积分 +10 收起 理由
substr函数 + 10 赞一个!

查看全部评分

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
9 [报告]
发表于 2015-07-03 10:05 |只看该作者
期末考试都结束了啊~~~~怎么一个个的都还在研究考题呢???

论坛徽章:
0
10 [报告]
发表于 2015-07-03 18:23 |只看该作者
回复 8# haooooaaa


    非常感谢我上传了所有题您帮看下,现在的脚本执行行 有些题目还是有问题的

3.rar (29.45 KB, 下载次数: 14)

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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP