仅打印字符串中与正则表达式匹配的部分

2024-06-08 18:15:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有400个包含多行的文件。我想找到特定的行,只提取/打印其中的一部分

我想达到以下目标:

Full seesion name: T27I5E8_S1_N005_V004

并仅打印:

S1_V004

我试过:

for filename in os.listdir(data_directory): 
     with open(data_directory + "/" + filename) as file:
        for line in file:
            if re.search(r'([S][\d])|([V][\d]{3})', line):
                    print(line)

但它打印出了整条线。 我还尝试:

  subjID = re.compile(r'([S][\d])|([V][\d]{3})')

for filename in os.listdir(data_directory): 
     with open(data_directory + "/" + filename) as file:
        for line in file:
            print(subjID.findall(line))

但输出结果如下所示:

  []
[]
[]
[]
[('S1', ''), ('', 'V094')]
[]
[]
[]
[]
[]
[]
[]
[('S1', ''), ('', 'V094')]
[]
[]
[]
[]
[]
[]
[]

Tags: inrefordataosaswithline
1条回答
网友
1楼 · 发布于 2024-06-08 18:15:42

你可以用

for filename in os.listdir(data_directory): 
  with open(data_directory + "/" + filename, 'r') as file:
    for line in file:
      m = re.findall(r'[SV]\d+', line)
      if len(m):
        print("_".join(m))

Python demoregex demo。使用re.findall,将找到所有匹配项,如果找到,则结果是由匹配文本组成的_连接字符串

图案细节

  • [SV]-SV
  • \d+-1+位

相关问题 更多 >