查看: 4112|回复: 11|关注: 0

[已解决] 如何在txt文件中取出符合要求的数据

[复制链接]

新手

11 麦片

财富积分


050


6

主题

23

帖子

0

最佳答案
我现在需要把一个txt文件中的CDS后面括号内的数据读取出来,这该怎么做呢?有什么方法或者函数可以做到吗?麻烦各位道友指点一二
/db_xref="HGNC:HGNC:26428"
                     /db_xref="MIM:615183"
     CDS             complement(join(2192858..2192975,2193639..2193910,
                     2193998..2194133,2198007..2198123,2201050..2201225,
                     2203564..2203630,2206140..2206174,2206305..2206394))
                     /gene="FAAP20"
                     /gene_synonym="C1orf86; FP7162"
                     /note="Derived by automated computational analysis using
                     gene prediction method: Gnomon."
  CDS             join(6040569..6040645,6041831..6041872,6072755..6072798,
                     6073733..6073770,6082195..6082274,6085204..6085248,
                     6087467..6087511,6089008..6089051,6090389..6090475,
                     6094400..6094485,6095323..6095443,6095530..6095624,
                     6096636..6096756,6097269..6097531)
                     /gene="KCNAB2"

TIM图片20180116161314.png
TIM图片20180116161259.png

new 1.txt

3.83 MB, 下载次数: 4

回复主题 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


6

主题

23

帖子

0

最佳答案
 楼主| 发表于 2018-1-16 16:34:16 | 显示全部楼层
我只需要括号内的数据,最好是数据的后半段
TIM图片20180116163144.png
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

109 麦片

财富积分


50500


1

主题

181

帖子

22

最佳答案
发表于 2018-1-17 10:19:28 | 显示全部楼层
这种形式的,可以
第一步:字符串的形式读入,可查看fread函数
第二步:(1)利用findstr类似函数查找所有..的标记位置,然后读取后面7个字符,然后转换为数字,即可
(2)另外一种,是判断整个字符串中的数字,提取出所有的数字,然后根据自己需求进一步提取
(3)利用正则表达式regexp函数
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


6

主题

23

帖子

0

最佳答案
 楼主| 发表于 2018-1-17 10:34:03 | 显示全部楼层
18833126693 发表于 2018-1-17 10:19
这种形式的,可以
第一步:字符串的形式读入,可查看fread函数
第二步:(1)利用findstr类似函数查找所有. ...

谢谢,不过txt中还有类似图片这种样子的,只用..家后面的数字好像不行
G$%NAP]DM3YAV}ABS2LW0SH.png
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

109 麦片

财富积分


50500


1

主题

181

帖子

22

最佳答案
发表于 2018-1-17 10:38:09 | 显示全部楼层
颜cc 发表于 2018-1-17 10:34
谢谢,不过txt中还有类似图片这种样子的,只用..家后面的数字好像不行

稍等,看你有传上来文件了,我试试
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


6

主题

23

帖子

0

最佳答案
 楼主| 发表于 2018-1-17 10:45:14 | 显示全部楼层
18833126693 发表于 2018-1-17 10:38
稍等,看你有传上来文件了,我试试

好好,麻烦了
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

311 麦片

财富积分


50500


10

主题

353

帖子

65

最佳答案
  • 关注者: 10
发表于 2018-1-17 10:57:53 | 显示全部楼层 |此回复为最佳答案

fid = fopen('C:\Users\Administrator\Desktop\new++1.txt');
str = fread(fid,'*char')';
fclose(fid);
res = regexpi(str,'CDS.*?join\((.*?)\)','tokens');
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


6

主题

23

帖子

0

最佳答案
 楼主| 发表于 2018-1-17 12:24:00 | 显示全部楼层
逻辑逻辑 发表于 2018-1-17 10:57
fid = fopen('C:%users\Administrator\Desktop\new++1.txt');
str = fread(fid,'*char')';
fclose(fid);

非常感谢您的帮助,如果可以的话能否给我解释一下'CDS.*?join\((.*?)\)'这一段是如何设计的,谢谢
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

311 麦片

财富积分


50500


10

主题

353

帖子

65

最佳答案
  • 关注者: 10
发表于 2018-1-17 13:08:26 | 显示全部楼层
颜cc 发表于 2018-1-17 12:24
非常感谢您的帮助,如果可以的话能否给我解释一下'CDS.*?join\((.*?)\)'这一段是如何设计的,谢谢 ...

这是正则表达式中你可以百度一下资料,.*?是匹配任意长度的字符,所以大致的意思就是,匹配以CDS.......jion(需要保存的数据)
回复此楼 已获打赏: 0 积分

举报

新手

11 麦片

财富积分


050


6

主题

23

帖子

0

最佳答案
 楼主| 发表于 2018-1-17 13:18:59 | 显示全部楼层
逻辑逻辑 发表于 2018-1-17 10:57
fid = fopen('C:%users\Administrator\Desktop\new++1.txt');
str = fread(fid,'*char')';
fclose(fid);

如果我只要..后面的数字,需要改成什么样子呢?试了好多都不对。。。。
回复此楼 已获打赏: 0 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表