
标题: [文本处理] [已解决]批处理如何批量提取文本中的特定内容? [打印本页]
作者: sweet惜缘 时间: 2015-12-28 15:00 标题: [已解决]批处理如何批量提取文本中的特定内容?
如何提取drugnbank.txt中每个drug的Drug_Target_ID信息,(有的dug_target信息不止下面3个,可能多达几十个),由于附件太大,已上传至百度网盘,链接如下:http://pan.baidu.com/s/1numNLLf
这个是网盘附件中一个drug信息的txt.)
# Drug_Target_1_ID:
3819
# Drug_Target_1_Locus:
11p11-q12
# Drug_Target_1_Molecular_Weight:
70037
# Drug_Target_1_Name:
Prothrombin
# Drug_Target_1_Number_of_Residues:
622
# Drug_Target_1_PDB_ID:
1HAG
# Drug_Target_2_ID:
54
最后希望得到的out_target.txt内容如下(有的没有target的信息就空着):
BEGIN_DRUGCARD Drug_Target_1_ID Drug_Target_2_ID Drug_Target_3_ID .....
DB00001 3819 54 ...
DB00002 ... ... ...
...
...
灰常感谢!!!
作者: pcl_test 时间: 2015-12-28 23:04
- 1>1/* :
- @echo off
- cscript -nologo -e:jscript "%~f0" "drugbank.txt">"out.txt"
- echo;完成
- pause & exit/b
- */
-
- var txt ='';
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var f = fso.OpenTextFile(WScript.Arguments(0));
- while(!f.AtEndOfStream) {
- var str = f.ReadLine();
- if(/^\s*$/.test(str))var id=null;
- if(id){
- map[id]=str;
- arr.push(id);
- }
- if(/^#\s?BEGIN_DRUGCARD/.test(str)){
- var tmp='', arr=[], map={};
- tmp+=str.replace(/^.+\s/,'');
- }
- if(/^# Drug_Target_(\d+)_ID:/.test(str)){var id=RegExp.$1;}
- if(/^#\s?END_DRUGCARD/.test(str)){
- arr.sort(function(a,b){return a-b});
- for(var i=0; i<arr.length;i++){
- tmp+=' ('+arr[i]+')'+map[arr[i]];
- //不显示序号,上句改为tmp+=' '+map[arr[i]];
- }
- txt+=tmp+'\r\n'
- map=null;
- }
- }
- WSH.Echo(txt);
复制代码
作者: sweet惜缘 时间: 2015-12-29 12:20
回复 2# pcl_test
灰常感谢!!程序有效!
作者: sweet惜缘 时间: 2015-12-29 12:24
回复 2# pcl_test
大神。有一个问题,能否把括号内的数字去掉?
DB00001 (1)54
DB00002 (1)844 (2)1102 (3)3814 (4)3815 (5)3816 (6)3817 (7)3818 (8)2782 (9)784 (10)3819 (11)3820 (12)3821
DB00003 (1)874
DB00004 (1)724 (2)717 (3)3823
DB00005 (1)777 (2)1269 (3)784 (4)3818 (5)3819 (6)3820 (7)3821 (8)1789 (9)1102 (10)2782 (11)3814 (12)3815 (13)3816 (14)3817
希望得到的如下:
DB00001 54
DB00002 844 1102 3814 3815 3816 3817 3818 2782 784 3819 3820 3821
作者: pcl_test 时间: 2015-12-29 13:37
回复 4# sweet惜缘
不是说了怎么改了吗
作者: sweet惜缘 时间: 2015-12-29 13:47
回复 5# pcl_test
汗~能否把括号里的数字去掉?我只需要后面的ID,不需要括号中的标号~~
灰常感谢!!
作者: sweet惜缘 时间: 2015-12-29 13:48
回复 5# pcl_test
看到了 = = 我眼瞎了 感谢!!!!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |