【发布时间】:2015-06-02 06:20:34
【问题描述】:
我的 re.findall 搜索匹配并返回正确的字符串,但是当我尝试打印结果时,它会将其打印为列表而不是字符串。下面的例子:
> line = ID=id5;Parent=rna1;Dbxref=GeneID:653635,Genbank:NR_024540.1,HGNC:38034;gbkey=misc_RNA;gene=WASH7P;product=WAS protein family homolog 7 pseudogene;transcript_id=NR_024540.1
> print re.findall(r'gene=[^;\n]+', line)
> ['gene=WASH7P']
我希望 print 函数只返回 gene=WASH7P 而不带方括号和括号。
如何调整我的代码,使其只打印匹配项,而不用括号和括号括起来?
谢谢!
【问题讨论】:
-
print re.findall(r'Name=[^;]+', line)[0]应该可以解决问题。 -
您是否期待不止一场比赛?如果没有 - 请改用
re.search -
这两个建议都适用于我的几个正则表达式,但是,它们不适用于我脚本中的另一个正则表达式。 print re.findall(r'Name=[^;]+', line)[0] 返回“列表索引超出范围”的错误,使用 print re.search().group 返回“NoneType”错误对象没有属性“组”。我检查了正则表达式是否找到了预期的字符串,如果我只是打印 re.findall() 它会打印结果,但它会将输出打印为 list 。有任何想法吗?谢谢!
-
@Ilea 不可能。如果 re.search 返回 NoneType,则没有匹配项。请显示您的代码,包括该行。
-
更新您的问题,包括您在其中的评论中的信息。