[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]如何根据两个文本第一列的内容,将一个文本其他列的内容合并?

http://pan.baidu.com/s/1kVGmxef       target.txt 总共66+kb

index.txt中是所需要更改的索引顺序,即把target.txt中根据第一列与index中的对比,然后更改target.txt中的顺序。
index.txt内容如下:
DCC0001
DCC0002
DCC0003
DCC0006
DCC0007
DCC0008
DCC0009
DCC0010
...
共759行
target.txt内容如下:
DCC0001         P12314          P00533          O75015          P09871          P00736          P02745          P02746          P02747          P08637          P12318          P31994          P31995           
DCC0006         P14784          P01589          P31785                                                                                                     
DCC0007         P12314          O75015          P09871          P00736          P02745          P02746          P02747          P08637          P12318          P31994          P31995          P01375           
DCC0008         P12314          P00533          O75015          P09871          P00736          P02745          P02746          P02747          P08637          P12318          P31994          P31995          P04626
DCC0009         P12314          O75015          P09871          P00736          P02745          P02746          P02747          P08637          P12318          P31994          P31995          P11836           
...
共652行~希望更改后得到output.txt第一列与index中的顺序一致,共759行,即把target中没有的drug根据index中的drug数据增加该行即可,如下列红色,如下:
DCC0001         P12314          P00533          O75015          P09871          P00736          P02745          P02746          P02747          P08637          P12318          P31994          P31995           
DCC0002                                                                                                                        
DCC0003
                                                                                                              
DCC0006         P14784          P01589          P31785                                                                                                     
DCC0007         P12314          O75015          P09871          P00736          P02745          P02746          P02747          P08637          P12318          P31994          P31995          P01375           
DCC0008         P12314          P00533          O75015          P09871          P00736          P02745          P02746          P02747          P08637          P12318          P31994          P31995          P04626
DCC0009         P12314          O75015          P09871          P00736          P02745          P02746          P02747          P08637          P12318          P31994          P31995          P11836           



灰常感谢~~~~
1

评分人数

既然索引都是顺序的,那直接用 sort 不行吗

TOP

楼主又来了.我都快学会julia了.
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 2# CrLf

问题是target中除了第一列是顺序的,后面的是与第一列有关的数据~第一列的顺序改变,后面几列也要随之变化。。
我昨天试图编写matlab程序,但是matlab不支持字符串批量赋值,所以就上咱们这求助了~~

TOP

回复 3# codegay


    恭喜~我还在matlab阶段  - -

TOP

本帖最后由 codegay 于 2016-3-30 16:59 编辑
  1. #="""
  2. julia文件合并排序.jl
  3. http://bbs.bathome.net/thread-39841-1-1.html
  4. 2016年3月29日 17:29:48 codegay
  5. 思路如crlf所说,找出不存target中id,合并然后sort排序就可以.
  6. """=#
  7. indexio=open("index2.txt")
  8. targetio=open("target2.txt")
  9. indtxt=[strip(r) for r in readlines(indexio)]
  10. #@show indtxt
  11. tartxt=readlines(targetio)
  12. tarind=[split(r)[1] for r in tartxt]
  13. #@show tarind
  14. notin=filter(x -> !(x in tarind),indtxt)
  15. #@show notin
  16. notin=[string(r,"\r\n") for r in notin]
  17. #@show sort([tartxt;notin])
  18. result=open("out.txt","w+")
  19. write(result,sort([tartxt;notin]))
  20. close(indexio)
  21. close(targetio)
  22. close(result)
  23. #[Finished in 4.3s]
复制代码
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 happy886rr 于 2016-3-29 19:41 编辑

回复 1# sweet惜缘
  1. @echo off
  2. for /f "tokens=1*" %%a in (target.txt) do (set "%%a=%%a  %%b")
  3. (for /f "tokens=1" %%a in (index.txt) do (if not defined %%a (echo %%a) else call echo %%%%a%%))>new.txt
复制代码

TOP

回复 6# codegay


    不知道为什么跑不出来~不过还是谢啦~~辛苦~~

TOP

回复 7# happy886rr


    代码有效~~~感谢!!

TOP

返回列表