免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9226 | 回复: 7

[文本处理] 文本求助-删除html内容和缺项补空 [复制链接]

论坛徽章:
17
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0015-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:38
发表于 2020-07-13 07:00 |显示全部楼层
本帖最后由 bikkuri 于 2020-07-16 07:41 编辑

大家好!
我有一个问题向大家请教,
有如下一个文本。
  1. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h000006DVa3AAG/view" style3D"color:rgb(0,112,210); word-break:break-all">00332240</a>
  2. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h000006DVa3AAG/view" style3D"color:rgb(0,112,210); word-break:break-all">Inovasi Lintas Media - Fiberstar// Request graph snmp service on nokia 7550-SR</a>
  3. Indonesia
  4. <a href3D"https://nokia.lightning.force.com/lightning/r/0014100000RhiacAAB/view" style3D"color:rgb(0,112,210); word-break:break-all">PT INOVASI LINTAS MEDIA</a>
  5. <a href3D"https://nokia.lightning.force.com/lightning/r/0033h000008tZq5AAE/view" style3D"color:rgb(0,112,210); word-break:break-all">Chairudin Setiawan</a>
  6. 7/12/2020 6:46 PM
  7. 7/12/2020 8:00 PM
  8. 7
  9. <a href3D"https://nokia.lightning.force.com/lightning/r/0052M000009BySQQA0/view" style3D"color:rgb(0,112,210); word-break:break-all">Marugaobozu</a>
  10. Responded in Progress
  11. Open Violation
  12. Low
  13. Minor
  14. NSP (Network Services Platform)
  15. -
  16. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h000005mj9EAAQ/view" style3D"color:rgb(0,112,210); word-break:break-all">00324914</a>
  17. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h000005mj9EAAQ/view" style3D"color:rgb(0,112,210); word-break:break-all">NFM-P Statistical Counter for Wavence Product</a>
  18. Malaysia
  19. <a href3D"https://nokia.lightning.force.com/lightning/r/0014100000LUkyoAAD/view" style3D"color:rgb(0,112,210); word-break:break-all">U MOBILE SDN BHD</a>
  20. <a href3D"https://nokia.lightning.force.com/lightning/r/0033h000007Xuh9AAC/view" style3D"color:rgb(0,112,210); word-break:break-all">Guruh Samodra</a>
  21. 7/6/2020 4:11 PM
  22. 7/6/2020 4:15 PM
  23. 154
  24. <a href3D"https://nokia.lightning.force.com/lightning/r/0052M000009BySQQA0/view" style3D"color:rgb(0,112,210); word-break:break-all">Marugaobozu</a>
  25. Responded in Progress
  26. Compliant
  27. Low
  28. Minor
  29. NSP (Network Services Platform)
  30. NFM-P (Network Functions Manager - Packet)
  31. -
  32. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h00000625xqAAA/view" style3D"color:rgb(0,112,210); word-break:break-all">00329600</a>
  33. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h00000625xqAAA/view" style3D"color:rgb(0,112,210); word-break:break-all">License Creation</a>
  34. Australia
  35. <a href3D"https://nokia.lightning.force.com/lightning/r/0014100000LUkiTAAT/view" style3D"color:rgb(0,112,210); word-break:break-all">SA POWER NETWORKS</a>
  36. <a href3D"https://nokia.lightning.force.com/lightning/r/0033h000009t7wQAAQ/view" style3D"color:rgb(0,112,210); word-break:break-all">Madhan K</a>
  37. 7/7/2020 9:12 AM
  38. 7/9/2020 2:34 PM
  39. 137
  40. <a href3D"https://nokia.lightning.force.com/lightning/r/0052M000009BySQQA0/view" style3D"color:rgb(0,112,210); word-break:break-all">Marugaobozu</a>
  41. Pending Customer
  42. -
  43. Low
  44. Minor
  45. 5620 SAM (Service Aware Manager)
  46. -
  47. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h000005Hxk4AAC/view" style3D"color:rgb(0,112,210); word-break:break-all">00317443</a>
  48. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h000005Hxk4AAC/view" style3D"color:rgb(0,112,210); word-break:break-all">NSP 19.9 All Wavences Radio NE capacity License in the Umobile network.</a>
  49. Malaysia
  50. <a href3D"https://nokia.lightning.force.com/lightning/r/0014100000LUkyoAAD/view" style3D"color:rgb(0,112,210); word-break:break-all">U MOBILE SDN BHD</a>
  51. <a href3D"https://nokia.lightning.force.com/lightning/r/0033h000007Xuh9AAC/view" style3D"color:rgb(0,112,210); word-break:break-all">Guruh Samodra</a>
  52. 6/25/2020 3:30 PM
  53. 6/25/2020 3:32 PM
  54. 418
  55. <a href3D"https://nokia.lightning.force.com/lightning/r/0052M000009BySQQA0/view" style3D"color:rgb(0,112,210); word-break:break-all">Marugaobozu</a>
  56. Pending Customer
  57. Compliant
  58. Medium
  59. Major
  60. NSP (Network Services Platform)
  61. NFM-P (Network Functions Manager - Packet)
  62. NSPD-260050
  63. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h000005fHlQAAU/view" style3D"color:rgb(0,112,210); word-break:break-all">00320535</a>
  64. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h000005fHlQAAU/view" style3D"color:rgb(0,112,210); word-break:break-all">NFM-P Switchover's long time more than 45 minutes (Calculate from user can access to NFM-P GUI)</a>
  65. Thailand
  66. <a href3D"https://nokia.lightning.force.com/lightning/r/0014100000LUo6bAAD/view" style3D"color:rgb(0,112,210); word-break:break-all">TRUE INTERNET CORPORATION COMPANY LIMITED</a>
  67. <a href3D"https://nokia.lightning.force.com/lightning/r/0033h000009I74tAAC/view" style3D"color:rgb(0,112,210); word-break:break-all">Patisamphitha Atthangkikamak</a>
  68. 6/30/2020 3:48 PM
  69. 7/1/2020 3:06 PM
  70. 298
  71. <a href3D"https://nokia.lightning.force.com/lightning/r/0052M000009BySQQA0/view" style3D"color:rgb(0,112,210); word-break:break-all">Marugaobozu</a>
  72. Pending Customer
  73. -
  74. Medium
  75. Major
  76. NSP (Network Services Platform)
  77. NFM-P (Network Functions Manager - Packet)
  78. -
  79. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h000005fBPAAA2/view" style3D"color:rgb(0,112,210); word-break:break-all">00320485</a>
  80. <a href3D"https://nokia.lightning.force.com/lightning/r/5003h000005fBPAAA2/view" style3D"color:rgb(0,112,210); word-break:break-all">[Customer/Major] CMG Measurement Missing</a>
  81. Indonesia
  82. <a href3D"https://nokia.lightning.force.com/lightning/r/0014100000LUkfCAAT/view" style3D"color:rgb(0,112,210); word-break:break-all">PT HUTCHISON 3 INDONESIA</a>
  83. <a href3D"https://nokia.lightning.force.com/lightning/r/0033h000003M8a0AAC/view" style3D"color:rgb(0,112,210); word-break:break-all">H3I FO Core</a>
  84. 6/30/2020 12:05 PM
  85. 6/30/2020 12:09 PM
  86. 302
  87. <a href3D"https://nokia.lightning.force.com/lightning/r/0052M000009BySQQA0/view" style3D"color:rgb(0,112,210); word-break:break-all">Marugaobozu</a>
  88. Responded in Progress
  89. Compliant
  90. Medium
  91. Major
  92. NSP (Network Services Platform)
  93. NFM-P (Network Functions Manager - Packet)
  94. -
复制代码


希望用awk做以下处理:
1. 去除html内容:将<a href...>和</a>去掉,只显示夹在中间的内容,比如第一行处理后仅显示:00332240;
2. 缺项补空:每一组数据由16行内容组成,以仅含有一个8位数字的行开头,后面紧接着的15行是属性行;
   但是有时候倒数第二行会丢失,使得有的数据块有16行,有的只有15行;
   希望对于只有15行的数据块在倒数第二行的位置插入一个空行补足16行。
例如:第一个数据块就只有15行,希望处理后显示为:

######################分割线######################
00332240
Inovasi Lintas Media - Fiberstar// Request graph snmp service on nokia 7550-SR
Indonesia
PT INOVASI LINTAS MEDIA
Chairudin Setiawan
7/12/2020 6:46 PM
7/12/2020 8:00 PM
7
Marugaobozu
Responded in Progress
Open Violation
Low
Minor
NSP (Network Services Platform)

-
######################分割线######################


谢谢大家的指点和帮助。



论坛徽章:
0
发表于 2020-07-13 13:51 |显示全部楼层
我参考了几十个sed脚本,经过思考,写了个脚本《ps找算题》,企图用来枪毙sed。
详见这里 http://bbs.chinaunix.net/thread-4292502-1-1.html

现在我讲解下,用它来 将<a href...>和</a>去掉。

使用参数:
-查找模式  '匹配头尾'
-找什么_块首 '<a href'
-找什么_块尾 '</a>'
-不用替换成啥_而用ps代码替换  $true

  1. function global:计算代码
  2. {
  3. #在这里可以调用,上述全局变量
  4. $a = $global:匹配头尾查找模式_找到的字符串.split('>')[-1]
  5. return $a
  6. }
复制代码

论坛徽章:
0
发表于 2020-07-13 13:53 |显示全部楼层
我参考了几十个sed脚本,经过思考,写了个脚本《ps找算题》,企图用来枪毙sed。
详见这里 http://bbs.chinaunix.net/thread-4292502-1-1.html

现在我讲解下,用它来 将<a href...>和</a>去掉。

使用参数:
-查找模式  '匹配头尾'
-找什么_块首 '<a href'
-找什么_块尾 '</a>'
-不用替换成啥_而用ps代码替换  $true

  1. function global:计算代码
  2. {
  3. #在这里可以调用,上述全局变量
  4. $a = $global:匹配头尾查找模式_找到的字符串.split('>')[-1]
  5. return $a
  6. }
复制代码

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
发表于 2020-07-15 12:52 |显示全部楼层
本帖最后由 cfwyy 于 2020-07-16 13:43 编辑

好久没来,python写个吧。仅保证对例子有效。
  1. import re
  2. from io import StringIO

  3. buf = StringIO()
  4. with open("1.html","r") as f:
  5.     for line in f:
  6.         match = re.search(r"(?<=>).+?(?=<)",line)
  7.         if match:
  8.             buf.write(match.group()+"\n")
  9.         else:
  10.             buf.write(line)

  11. res = re.findall("(?s)\d{8}.+?(?=\d{8}|$)",buf.getvalue())

  12. with open("res.txt","w") as f:
  13.     for s in res:
  14.         a = s.strip("\n").split("\n")
  15.         if len(a)==15:
  16.             a.insert(-1,"")
  17.         f.write("\n".join(a)+"\n")
  18.         f.write("##################################################################\n")
复制代码

用awk:test.awk
  1. BEGIN        {
  2.     FS="<|>"
  3. }
  4. {
  5.     if ($3 ~/[0-9]{8}/)
  6.     {
  7.         j=0
  8.         a[++i][++j]=$3
  9.     }
  10.     else if (NF==1)
  11.     {
  12.         a[i][++j]=$0
  13.     }
  14.     else if (NF>4 && $3 !~/[0-9]{8}/)
  15.     {
  16.         a[i][++j]=$3
  17.     }
  18. }
  19. END        {
  20.     for (i in a)
  21.     {
  22.         if (length(a[i])==15)
  23.         {
  24.             a[i][16] = a[i][15]
  25.             a[i][15] = ""
  26.         }
  27.         for (j in a[i])
  28.         {
  29.             print a[i][j]
  30.         }
  31.         print "##################################################################"
  32.     }
  33. }
复制代码
  1. awk -f test.awk 1.html >res.txt
复制代码


论坛徽章:
17
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0015-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:38
发表于 2020-07-16 07:41 |显示全部楼层
谢谢,请问能用awk处理吗?

论坛徽章:
17
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0015-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:38
发表于 2020-09-18 18:04 |显示全部楼层
本帖最后由 bikkuri 于 2020-09-18 19:44 编辑

非常感谢!

您的代码前面处理都没问题,输出的时候有点问题。
我改成了以下代码后可以正确输出了。

  1. awk 'BEGIN{FS="<|>"}{if ($3 ~/[0-9]{8}/&&length($3)==8){j=0;a[++i][++j]=$3}else if(NF==1&& $0!=""){a[i][++j]=$0}else if(NF>4){a[i][++j]=$3}}END{for(z in a){if(length(a[z])==15){a[z][16]=a[z][15];a[z][15]=""}}for(x=1;x<=i;x++)for(y=1;y<=16;y++)print a[x][y]}'
复制代码





回复 4# cfwyy



论坛徽章:
58
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
发表于 2020-10-28 12:25 |显示全部楼层
使用Python。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2021中国系统架构师大会

【数字转型 架构重塑】2021年5月20日-22日第十三届中国系统架构师大会将在云端进行网络直播。

大会为期3天的议程,涉及20+专场,近120个主题,完整迁移到线上进行网络直播对会议组织来说绝非易事;但考虑到云端会议的直播形式可以实现全国各地技术爱好者的参与,也使ITPUB作为技术共享交流平台得到更好的普及,我们决定迎难而上。
http://sacc.it168.com/


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP