免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: steveq1
打印 上一主题 下一主题

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

论坛徽章:
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
11 [报告]
发表于 2015-07-03 21:18 |只看该作者
本帖最后由 haooooaaa 于 2015-07-03 21:53 编辑

回复 10# steveq1


    这个测试OK
  1. #!/usr/bin/env python
  2. #-*- coding:utf-8 -*-

  3. import base64
  4. import re

  5. filename = "3.txt"

  6. def splitR(s):
  7.     tmp = []
  8.     for i in range(len(s)):
  9.         if not i:
  10.             t1 = s[0].split("<table name=")[0]
  11.             if "img src=" in t1:
  12.                 img = t1.split('"')[1]
  13.                 tmp.append("<div>" + re.subn("\<[^>]*\>","",t1)[0] + " " + img)
  14.             else:
  15.                 t2 = t1.split("<table name=")[0]
  16.                 if "</td>" in t2:
  17.                     tmp.append("<div>" + re.sub("<[^>]*>"," ",t2) + " ")
  18.                 else:   
  19.                     tmp.append(t2)
  20.         else:
  21.             if "img src=" in s[i]:
  22.                 tmp.append(base64.encodestring(s[i].split('"')[1])[0:-1])
  23.             else:
  24.                 tmp.append(base64.encodestring(s[i].split("</td>")[0])[0:-1])
  25.    
  26.     return '%s</div>\t[{"option" : "%s' % (tmp[0],'"},{"option" : "'.join(tmp[1:]) + '"}]')  

  27. def convf(filename):
  28.     tmp2 = []
  29.     with open(filename) as f:
  30.         for i in f:
  31.             tmp = []
  32.             if i.startswith("question") or i.strip()=="":
  33.                 continue
  34.             i = re.subn("&nbsp;","",i)[0]
  35.             s1 = re.split("[ABCD].", i)
  36.             if len(s1) > 3:
  37.                 result = splitR(s1)
  38.             else:
  39.                 s1 = re.split("[ABCD]\.", i)
  40.                 result = splitR(s1)
  41.                
  42.             tmp2.append(result)
  43.     return tmp2

  44. if __name__ == "__main__":  
  45.     with open("base.txt", "w") as f:
  46.         f.write("\n".join(convf(filename)))
复制代码

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

谢谢
1:题目中和答案含有图片标示符的不能去掉 <img src =“图片url” />,执行脚本后题目中的图片标记被去掉了
正确格式<img src="Upload/2013-08/05/c4024637-54c6-4aa8-a8c3-6fdf2b88ea50/paper.files/image037.png" />
解析后的错误格式 Upload/2013-08/05/c4024637-54c6-4aa8-a8c3-6fdf2b88ea50/paper.files/image037.png

2:答案选项过长时换行还有问题.
  1. <div>【题文】已知,(m为任意实数),则P、Q的大小关系为( ) Upload/2013-08/05/c4024637-54c6-4aa8-a8c3-6fdf2b88ea50/paper.files/image037.png</div>       [{"option" : "VXBsb2FkLzIwMTMtMDgvMDUvYzQwMjQ2MzctNTRjNi00YWE4LWE4YzMtNmZkZjJiODhlYTUwL3Bh
  2. cGVyLmZpbGVzL2ltYWdlMDM5LnBuZw=="},{"option" : "VXBsb2FkLzIwMTMtMDgvMDUvYzQwMjQ2MzctNTRjNi00YWE4LWE4YzMtNmZkZjJiODhlYTUwL3Bh
  3. cGVyLmZpbGVzL2ltYWdlMDQwLnBuZw=="},{"option" : "VXBsb2FkLzIwMTMtMDgvMDUvYzQwMjQ2MzctNTRjNi00YWE4LWE4YzMtNmZkZjJiODhlYTUwL3Bh
  4. cGVyLmZpbGVzL2ltYWdlMDQxLnBuZw=="},{"option" : "5LiN6IO956Gu5a6a"}]
复制代码

论坛徽章:
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
13 [报告]
发表于 2015-07-03 23:21 |只看该作者
本帖最后由 haooooaaa 于 2015-07-03 23:31 编辑

回复 12# steveq1
  1. #!/usr/bin/evn python
  2. #-*- coding:utf-8 -*-

  3. import base64
  4. import re

  5. filename = "3.txt"

  6. def splitR(s):
  7.     tmp = []
  8.     for i in range(len(s)):
  9.         if not i:
  10.             t1 = s[0].split("<table name=")[0]
  11.             #if "img src=" in t1:
  12.             #    t1 = re.sub('style=[^/]*','',t1) #remove style="vertical-align:middle;"
  13.             tmp.append(t1)
  14.         else:
  15.             tmp.append(re.sub("\n","",base64.encodestring(s[i].split("</td>")[0])))
  16.    
  17.     return '%s</div>\t[{"option" : "%s' % (tmp[0],'"},{"option" : "'.join(tmp[1:]) + '"}]')  

  18. def convf(filename):
  19.     tmp2 = []
  20.     with open(filename) as f:
  21.         for i in f:
  22.             tmp = []
  23.             if i.startswith("question") or i.strip()=="":
  24.                 continue
  25.             i = re.subn("&nbsp;","",i)[0]
  26.             s1 = re.split("[ABCD].", i)
  27.             if len(s1) > 3:
  28.                 result = splitR(s1)
  29.             else:
  30.                 s1 = re.split("[ABCD]\.", i)
  31.                 result = splitR(s1)
  32.                
  33.             tmp2.append(result)
  34.     return tmp2

  35. if __name__ == "__main__":  
  36.     with open("base.txt", "w") as f:
  37.         f.write("\n".join(convf(filename)))
复制代码

论坛徽章:
0
14 [报告]
发表于 2015-07-04 14:28 |只看该作者
回复 13# haooooaaa


    非常感谢,可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP