我有一个看起来像这样的文本文件
Name #Variants #Cases #Controls
CNGA3 5 5 0
GPR125 4 3 0
IGHMBP2 4 4 0
STK11IP 4 4 0
ACAD9 3 3 0
ANKRD17 3 3 0
我想解析这个文件并将所有基因名称(name
列)返回到列表 - list_of_genes
或类似的东西。
我有以下代码
gene_list = []
for i in range (6, 7):
run_file = open('run_{}_results.txt'.format(i))
gene = re.compile('[^\s]*', re.I)
for line in run_file:
match=gene.match(line, re.IGNORECASE)
if match:
matched_gene = match.group()
gene_list.append(matched_gene)
当我运行该代码时,我得到的结果是
['GA3', 'R125', 'HMBP2', 'K11IP', 'AD9', 'KRD17']
正则表达式跳过了每个基因的前两个字符,我不明白为什么。
最佳答案
你的问题在这里:
match=gene.match(line, re.IGNORECASE)
second parameter to a regex object's match()
method为pos
,表示匹配操作的起始位置。 re.IGNORECASE
恰好是 2
。
您已经在编译时将正则表达式定义为不区分大小写,因此当然没有必要再次这样做(因此没有办法这样做)。此外,您的正则表达式无论如何都不需要该选项,因为它不包含任何大小写字符。
虽然我在这里,"[^\s]*"
应该是 r"\S*"
。
关于python - python 中的正则表达式跳过行的前 2 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17372334/