如何将 match.group() 文本放入 pandas 数据框中?

How to put match.group() text into a pandas dataframe?

我正在使用 re 将一堆文本过滤为我需要的信息。我现在可以使用 match.group().

从文本的每一行打印我需要的两条信息

match.group(1) 是一个数字,match.group(4) 是一个字符串。对于每一行(通过 for 循环迭代),我需要将 match.group(1) 添加到数据框中的一列,并将 match.group(4) 添加到另一列。

这是代码(底部的打印语句需要替换为将每个元素添加到数据框的代码):

finalText = re.search(r'19\s+domestic and stock rights(.*?)20\s+native title rights', rawText, flags=re.S | re.I).group(

pattern = re.compile('(\d+)( ML/year )(in the |the )([\w \/\(\)]+)')

df = pd.DataFrame()

for line in finalText.splitlines():
    matches = re.finditer(pattern, line)

    for matchNum, match in enumerate(matches, start=1):
    print (match.group(1) +","+ match.group(4))

和数学 match.group(1) 是一个数字,match.group(4) 是一个位置,因此数据帧的示例是:

Water Usage    Town
55             York
718            Holst
7              Poke

如果您想添加到新的 DF,则:

你先在循环外发起一个新的DF:

new_df = pd.dataframe(columns=['match1','match4'])

在循环内:

row = [match.group(1), match.group(4)]
new_df.loc[len(new_df)] = row

如果是现有的DF - 在最后两行代码中将new_df替换为df

创建元组列表并传递给 DataFrame 构造函数:

out = []
for line in finalText.splitlines():
    matches = re.finditer(pattern, line)

    for matchNum, match in enumerate(matches, start=1):
        out.append((match.group(1), match.group(4)))
        
df = pd.DataFrame(out, columns=['Water Usage','Town'])
print(df)