gpt4 book ai didi

python - python 中的正则表达式跳过行的前 2 个字符

转载 作者:太空宇宙 更新时间:2023-11-03 13:19:58 25 4
gpt4 key购买 nike

我有一个看起来像这样的文本文件

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() methodpos,表示匹配操作的起始位置。 re.IGNORECASE 恰好是 2

您已经在编译时将正则表达式定义为不区分大小写,因此当然没有必要再次这样做(因此没有办法这样做)。此外,您的正则表达式无论如何都不需要该选项,因为它不包含任何大小写字符。

虽然我在这里,"[^\s]*" 应该是 r"\S*"

关于python - python 中的正则表达式跳过行的前 2 个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17372334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com