代码之家  ›  专栏  ›  技术社区  ›  N.Omugs

Python regex:获取文本文件中的regex模式并存储在数组或列表中

  •  1
  • N.Omugs  · 技术社区  · 6 年前

    我在一个文本文件中有这个示例数据:

    09-02||||||||09-14|07:24|12:15|12:58| | |

    09-03| | | | | | |09-15|||||||

    我正在尝试用这种模式获取所有数据并将其存储在数组或列表中:

    \d{2,3}-\d{2,3}
    

    打印时的输出数据应如下所示:

    ['09-02','09-14','09-02','09-15']

    我尝试了这个代码,但它打印出了所有与模式匹配的行:

    n_date = re.compile('\d{2,3}-\d{2,3}')
    with open('sample_2.txt', 'r') as n:
        for line in n:
            re.match(n_date, line)
    print(line)
    

    请给我一个想法,我如何才能得到数据匹配我的正则表达式模式,而不是整个行。谢谢您!

    2 回复  |  直到 4 年前
        1
  •  1
  •   crow3487    6 年前

    试试这个:

    import re
    n_date = re.compile('\d{2,3}-\d{2,3}')
    with open('sample_2.txt', 'r') as n:
        n = n.read()
        result = re.findall(n_date, n)
        print(result)
    

    它打印出来:

    ['09-02', '09-14', '09-03', '09-15']
    

    您的代码只打印for循环的最后一行,而不存储或使用 re.match . re.findall

        2
  •  0
  •   ipramusinto    6 年前

    你应该使用 re.findall

    n_date = re.compile('\d{2,3}-\d{2,3}')
    result = []
    with open(‘re.txt’, ‘r’) as n:
        for line in n:
             result += re.findall(n_date, line)
    print(result)