【发布时间】:2014-07-07 13:46:10
【问题描述】:
这是我的输入文件
input.txt
www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?db=nucleotide&val=NM_003157.1 rs 1123
www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?db=nucleotide&val=NM_006157 dd 12
www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?db=nucleotide&val=NM_021018.2 ff 121
www.ncbi.nlm.nih.gov/entrez/viewer.fcgi?db=nucleotide&val=NM_000908.2 rs10472828-?
预期输出
NM_003157.1
NM_006157
NP_021018.2
NM_000908.2
我的正则表达式
egrep "N[A-Z]_[0-9]{1,}(\.[1-9])*" input.txt
我的代码
f=open("input.txt")
for i in f:
print(re.findall("N[A-Z]_[0-9]{1,}(\.[1-9])*",i.strip()))`
python 输出:
[]
[]
['.3']
[]
我的 grep 输出与我的预期输出完全匹配。但是当我在我的 python3 代码中使用相同的正则表达式时,我得到了不正确的输出。
【问题讨论】:
-
1.你的正则表达式不一样,2.什么是错误的输出?
-
您应该使用
parse_qs(和urlsplit朋友)来解析查询字符串,而不是正则表达式。