标题: [文本处理] 【已解决】批处理如何将数据按指定规则进行合并,并按照另一个文本的顺序输出? [打印本页]
作者: sweet惜缘 时间: 2016-1-19 16:20 标题: 【已解决】批处理如何将数据按指定规则进行合并,并按照另一个文本的顺序输出?
http://pan.baidu.com/s/1jHs2Ud4——DDI.txt
-——index.txt
DDI.txt内容如下:
drug1 id drug2 id
DB00005 DB06372
DB00005 DB01656
DB00005 DB06688
DB00005 DB06273
DB00005 DB08895
DB00005 DB00072
DB00005 DB09033
DB00006 DB00054
DB00006 DB01418
DB00006 DB00945
DB00006 DB00009
...
index.txt内容如下:
DB00005
DB00175
DB00177
DB00178
DB00190
DB00191
DB00193
DB00199
DB00201
...
希望得到的Out.txt内容如下(即提取DDI.txt中所有有index中drug_ID那一行的另一个字符附在后面):
DB00005 DB06372 DB01656 DB06688 DB06273 DB08895 DB00072 DB09033
DB00175 ...
...
跪求大神解答~~真要跪了 = =
之前的代码有问题~火烧眉毛
作者: sweet惜缘 时间: 2016-1-19 17:33
灰常感谢
作者: codegay 时间: 2016-1-19 18:14
这智商得低到什么程度,经常地来问这种重复性的问题。
作者: codegay 时间: 2016-1-19 20:04
- """
- 正则读取文本查找合并.py
- 依山居 2016年1月19日 19:14:51
- http://bbs.bathome.net/thread-39134-1-1.html
- """
- import re
- import time
- start=time.time()
- print("运行中..."*3)
- index=open("index.txt").read()
- indexlist=re.findall(r"DB\d+",index)
- DDI=open("DDI.txt").read()
- with open("out.txt","w+") as f:
- for r in indexlist:
- DDIlist=re.findall(r"%s.*(DB\d+)" % r,DDI)
- f.write(r+' '+' '.join(DDIlist)+"\n")
-
- end=time.time()
- pt=end-start
- print("运行耗时:",pt)
- try:
- input("按回车退出")
- except SyntaxError:
- pass
复制代码
作者: sweet惜缘 时间: 2016-1-20 10:21
回复 4# codegay
太棒啦~~~觉得python语言比批处理好懂很多~~~灰常感谢~~好人一生平安
作者: sweet惜缘 时间: 2016-1-20 10:42
回复 4# codegay
这样只提取出DDI第一列在index中存在的~,事实上还有第二列的~举个栗子~如下
DB00005 DB06372
DB00005 DB01656
DB00005 DB06688
DB08895 DB00005
DB06273 DB00005
这样提取出来的out会是
DB00005 DB06372 DB01656 DB06688 而没有后面DB08895 DB06273的数据 。
这种应该怎么修改呢?谢谢山居大神~~~~
作者: sweet惜缘 时间: 2016-1-20 10:52
回复 4# codegay
好啦~我自己解决啦~~谢谢大神
作者: 回家路上 时间: 2016-1-20 12:23
水一发- @echo off & setlocal enabledelayedexpansion
-
- for /f "skip=1 tokens=1*" %%i in (DDI.txt) do (
- if defined %%i (
- set %%i=!%%i! %%j
- ) else set %%i=%%j
- echo;%%i !%%i!
- )
- echo;==========输出结果==========
- for /f %%i in (index.txt) do echo;%%i !%%i!
-
- pause & exit /b
复制代码
作者: sweet惜缘 时间: 2016-1-20 19:57
回复 8# 回家路上
感谢!!
作者: CrLf 时间: 2016-1-21 01:10
本帖最后由 CrLf 于 2016-1-21 02:14 编辑
- @mshta http://bathome.net/s/hta/^
- var obj={};^
- type('DDI.txt').split(/\r\n/).slice(1)^
- ._each(function(str){m=str.split(/\s+/g);obj[m[0]]=(m[0] in obj?obj[m[0]]:m[0])+'\t'+m[1]});^
- values(obj).join('\r\n')^
- >"输出.txt"
复制代码
作者: sweet惜缘 时间: 2016-1-21 11:04
回复 10# CrLf
感谢!!!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |