小编bio*_*ant的帖子

使用re.MULTILINE和re.DOTALL一起使用python

基本上输入文件是这样的:

> U51677人非组蛋白染色质蛋白HMG1(HMG1)基因,完整

       cds. #some records don't have this line (see below)

       Length = 2575
Run Code Online (Sandbox Code Playgroud)

(一些文字)

> U51677人非组蛋白染色质蛋白HMG1(HMG1)基因,完整

       Length = 2575
Run Code Online (Sandbox Code Playgroud)

(一些文字)

(等等...)

现在我写了这个来提取以>开头的行和长度的数字

import re
regex = re.compile("^(>.*)\r\n.*Length\s=\s(\d+)", re.MULTILINE)
match = regex.findall(sample_blast.read())

print match[0]
Run Code Online (Sandbox Code Playgroud)

当长度线是>线的下一行时,它适用于提取记录.

然后我尝试了re.DOTALL,它应该使任何记录匹配(.*Length),无论是否有额外的行.

regex = re.compile("^(>.*)\r\n.*(?:\r\n*.?)Length\s=\s(\d+)", re.MULTILINE|re.DOTALL)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.我尝试了re.MULTILINE和re.DOTALL而不是管道,但仍然无法正常工作.

所以问题是如何创建一个匹配记录的正则表达式并返回所需的组,而不管记录中是否有额外的行.如果有人能够在re.VERBOSE中展示这一点,那将会很好.对不起,很长的帖子,并提前感谢您的任何帮助.:)

python regex

7
推荐指数
1
解决办法
3万
查看次数

使用标量作为perl中的条件

第一个计时器...所以让我知道在提出问题时是否有任何我没有注意的事情.

问题是如何使用标量作为条件,因为下面的代码不起作用.

my @parameter=('hub');

my %condition;
$condition{'hub'}{'1'}='$degree>=5';

foreach (@parameter) {
       if ($condition{$_}{'1'}) {..}
}
Run Code Online (Sandbox Code Playgroud)

我认为这是因为条件没有被正确解释,所以我也尝试了以下,这也没有用.

if ("$condition{$parameter}{'1'}") { ..}
Run Code Online (Sandbox Code Playgroud)

非常感谢任何帮助.:)

perl scalar if-statement conditional-statements

5
推荐指数
1
解决办法
1752
查看次数

python -regex match 和 for 循环逐行运行文件

所以我试图将文件的每一行与正则表达式匹配,我做了以下事情:

import re
regex='\S+\s+(\S{6})\s+VAR'
with open('/home/jyt109/humsavar.txt') as humsavar:
    for line in humsavar:
        match=regex.search(line)
        print match.group(1)
Run Code Online (Sandbox Code Playgroud)

预期输出是每行中的特定 6 个字符,而是出现如下错误:

Traceback (most recent call last):
  File "exercise.py", line 74, in <module>
    match=regex.search(line)
AttributeError: 'str' object has no attribute 'search'
Run Code Online (Sandbox Code Playgroud)

我发现(从下面的链接)要将正则表达式与文件的每一行匹配,必须首先将文件转换为 file.read() 列表

匹配文件对象中的多行正则表达式

要重新处理帖子,是否有更简单的方法(最好超过 1 行而不是 2 行)?

humsavar=open('/home/jyt109/humsavar.txt')
text=humsavar.read()
Run Code Online (Sandbox Code Playgroud)

谢谢!

python regex loops for-loop file

3
推荐指数
1
解决办法
7083
查看次数

R - as.numeric矩阵

我是R的新手,我正在尝试使用以下代码将数据帧转换为数字矩阵

expData <- read.table("GSM469176.txt",header = F)
expVec <- as.numeric(as.matrix(exp_data))
Run Code Online (Sandbox Code Playgroud)

当我使用as.matrix时,没有as.numeric,它会返回一些数字(如下所示)

0.083531    0.083496    0.083464    0.083435    0.083406    0.083377    0.083348"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
[9975] "-0.00285  -0.0028274  -0.0028046  -0.0027814  -0.0027574  -0.0027319  -0.0027042  
Run Code Online (Sandbox Code Playgroud)

但当我输入as.numeric时,它们都转换为"NA"

如果有人之前提出过这个问题我很抱歉,但我找不到解决问题的帖子.提前致谢

r

1
推荐指数
1
解决办法
2万
查看次数