生物化学家/生物信息学使用这个网站(http://dgpred.cbr.su.se/index.php?p=TMpred)。输入蛋白质序列后,您会得到类似的结果:
http://dgpred.cbr.su.se/analyze.php?with_length=on&seq=RGFTPLQWECVMASDFGHH
顶部和底部以及中间的一些数据是4列,其中第4列是我们想要的数据。我想从第4列(对于许多蛋白质序列)中取这些数字并放入Excel中。
我当前的工作流程(Mac OS X)是将所有内容复制到富文本文档中的TextEdit,alt +拖动数字(以便只选择第4列中的数字),然后执行AppleScript:
do shell script "pbpaste | sed 's/[^0-9.-]//g' | pbcopy"
do shell script "pbpaste | sed '/^$/d' | pbcopy"
我只是一个正则表达式的初学者,但这成功地留下了一个由换行符分隔的数字列表,准备好粘贴到excel中。
真正的甜蜜就是抛弃TextEdit步骤,让正则表达式直接从网站上获取数字。但是,这超出了我的水平。任何人都可以帮我这个吗?即,仅从第4列中选择数字
答案 0 :(得分:0)
当我复制这些数据时,我得到了这个结果:
R 1 -9.00
+0.03
G 2 -8.00
+0.36
F 3 -7.00
-0.26
每个奇数行上的3列,以[A-Z]
开头,然后是后续行所需的数据。
您想要的数字有两种形式:
^\t {3}([-+][0-9]+\.[0-9]{2})$ //for the red numbers
和
^([-+][0-9]+\.[0-9]{2}) {3}\t$ //the green numbers
您可以像这样提取两种类型:
^(\t {3})?([-+][0-9]+\.[0-9]{2})( {3}\t)?$
第二个捕获组([-+][0-9]+.[0-9]{2})
是您所追求的内容:
s/^(\t {3})?([-+][0-9]+\.[0-9]{2})( {3}\t)?$/$2/g
而不是Applescript,请考虑BBEdit或Textwrangler,您可能会发现它更容易使用。
将其放在搜索栏中:
\r[A-Z].*\r(\t {3})?([-+][0-9]+.[0-9]{2})( {3}\t)?$
,这在替换中:
\ r \ 2
选择“全部替换”
如何运作
\r // carriage return
[A-Z] // any character from A to Z (the lines you DON't want all start with a letter)
. // any character
* // any number of times
\r // carriage return
// that deals with the lines you DON't want to keep
( // grouping
\t // tab character
{3} // space character repeated 3 times
) // close grouping
? // zero or one occurences of the previous grouping
( // grouping (this is the bit you are after)
[+-] // character class - one of any of the [enclosed characters]
[0-9] // one of any of 0-9
+ // repeated one or more times
\. // full stop (escaped as it has special meaning in regext)
[0-9]{2} // exactly two occurences of any of 0-9
) // close capture parens (end of the group you are after)
( {3}\t)? // 3 spaces followed by a tab, occurring 0 or 1 time.
$ // end of line (in BBEdit/textwrangler you often use \r)
BBE / TW中的重要详细信息,捕获的组称为\ 1,\ 2,\ 3,而不是$ 1,$ 2,$ 3 ......
答案 1 :(得分:0)
我注意到浏览器以不同方式复制表。当我想从网页上复制表格数据时,我倾向于尝试使用IE / Chrome / Opera浏览器,因为 - 至少在Windows上 - 我只需将复制的表格直接粘贴到Excel中,并保留所有列。另一方面,Firefox往往会搞砸桌子。
使用Opera复制有问题的表并从单元格A1粘贴到Excel中,我得到F列中的所有绿色数字和H列中的红色。然后在第1行右侧的列中键入以下公式将单元格的角向下拖动以复制后续行:
=IF(AND(ISBLANK(F1), ISBLANK(H1)), "", IF(ISBLANK(F1), H1, F1))
现在在这个新专栏中,我看到了数据。我可以在原始数据的顶部粘贴一个新表格,然后右边的公式重新计算。 (其他浏览器的实际列可能不同。)
我承认这不是一个完全自动化的解决方案,但我发现这种方法在很多情况下都是快速有用的,我觉得值得分享。并且座右铭:如果您首选的浏览器没有做正确的事情,请尝试另一个!