多个正则表达式模式可使用python从文章中提取数据

时间:2018-10-03 00:08:13

标签: python regex

对python来说是新手,但对生活却很老。 我试图从txt文件中使用多个正则表达式模式从新闻文章txt文件中提取数据。我已经找到了匹配项但不保存提取的数据。到目前为止,这是我在原始的不卫生的非Python脚本中所拥有的。我正在学习,感谢所有评论。

from numba import jit

@jit(nopython=True)
def check_alt_parity(L):
    for i in range(len(L)-1):
        if L[i] % 2 == L[i+1] % 2:
            return False
    return True

def check_alt_parity_list(L):
    for i in range(len(L)-1):
        if L[i] % 2 == L[i+1] % 2:
            return False
    return True

A = [1, 2, 3, 4] * 10000
B = [1, 3, 2, 4] * 10000

%timeit check_alt_parity(A)       # 780 µs
%timeit check_alt_parity_list(A)  # 9.09 ms

1 个答案:

答案 0 :(得分:1)

您可以使用re.findall()将数据提取到列表中,而不仅仅是询问正则表达式是否匹配。

import re

reg_ex = open('APT1.txt', "r", encoding='utf-8-sig')
lines = reg_ex.read()
strip = lines.strip()
reggie = strip.split(';')

reggie_lst = []
match_lst = []

for raw_regex in reggie:
    reggie_lst.append(raw_regex)

get_string = open("APT.txt", "r", encoding='utf-8-sig')
nystring = get_string.read()


for reg in reggie_lst:
    for text_match in re.findall(reg, nystring):
        print("Got match for regex {}: {}".format(reg, text_match))

当然,除了将其打印在最后一行之外,您还可以将其保存在新文件中。在此示例中,我还删除了仅出于打印/调试目的而编译正则表达式。

在正则表达式中使用括号(组)进行警告。 re.findall()的行为与re.search()re.match()有点不同。然后,您必须使用(?: …,另请参见this post