我有这个密码
for f in files :
## for next file name, extract gene name using regular expression pattern
## look for ..._<gene name>_CMV...
s = re.search( r'_([^_]+)_CMV', f )
## ^^^ The part captured in parentheses is group #1
gene = s.group(1)
从字符串B4_3482_ULK4_CMV-F中提取ULK4
我正在尝试开发一个正则表达式,它可以从字符串A6_I032_5_GAR1_CMV-F中提取GAR1。到目前为止,我所尝试的似乎都不起作用
s = (r '([\W_])([^_]+)_CMV', f ) - this returns a syntax error
s = re.search (r'([^_]+)_CMV', f ) - this returns an Attribute error
Traceback (most recent call last):
File "protocola1.py", line 21, in <module>
gene = s.group(1)
AttributeError: 'NoneType' object has no attribute 'group'
我感谢迄今为止所有的建议
正则表达式
([\W])([^_]+)_CMV
匹配一个非单词字符,后跟一个或多个非下划线,后跟_CMV
给定的测试字符串与此正则表达式不匹配,如果其中没有非单词字符,则结果
s
为空改用这个:
这是您使用的第一个代码:
这是上述代码的第一个解决方案:
正如您在本LINK中所看到的,上面的代码工作得非常好。在命令中,
r
和正则表达式的开头之间有空格。另外,当使用这个命令时,您必须使用group(2)
,正如您在正则表达式的附加链接中看到的那样。因为group(1)
给你_
(下划线)。另外,在这里您没有使用re.search
,这可能会给您带来错误您可以使用如下内容:
这是您正在使用的第二个代码:
这是上述代码的第二种解决方案:
在这个LINK中,上面的代码可以很好地工作。在您的命令中,它显示了
AttributeError: 'NoneType' object has no attribute 'group'
,这肯定是files
中确实有NONE
值的标志。此外,在使用此命令时,必须使用group(1)
,如所附链接所示在命令
(r '([\W_])([^_]+)_CMV', f )
中r
和字符串开头('
)之间有一个空格-这将导致语法错误。将r
直接放在字符串开始字符的前面,应该解决这个问题相关问题 更多 >
编程相关推荐