gpt4 book ai didi

python - 如何在Python中使用正则表达式从数据集中提取数据?

转载 作者:太空宇宙 更新时间:2023-11-03 21:42:24 26 4
gpt4 key购买 nike

我有一个数据集,我想从该数据集中提取同位语特征。

در
همین
حال
،
<coref coref_coref_class="set_0" coref_mentiontype="ne" markable_scheme="coref" coref_coreftype="ident">
نجیب
الله
خواجه
عمری
,
</coref>
<coref coref_coref_class="set_0" coref_mentiontype="np" markable_scheme="coref" coref_coreftype="atr">
سرپرست
وزارت
تحصیلات
عالی
افغانستان
</coref>
گفت
که
در
سه
ماه
گذشته
در
۳۳
ولایت
کشور
<coref coref_coreftype="ident" coref_coref_class="empty" coref_mentiontype="ne" markable_scheme="coref">
خدمات
ملکی
</coref>
از
حدود
۱۴۹
هزار

我想将数据集中的数据存储在两个列表中。在 find_atr 列表中,我存储了 coref 标记包含 coref_coreftype="atr" 的数据。对于 find_ident 列表,我想存储 coref_coreftype="ident" 的数据,因此我们在此数据集中的最后一个 coref 标签上有另一个具有 coref_coref_class 的 coref 标签=“空”。我不想存储带有标签 coref_coref_class="empty" 的数据。现在在正则表达式上我提到它应该只包含那些 coref_coref_class="set_.*?" 而不是 coref_coref_class="empty" 但它仍然存储 coref_coref_class="empty",其中应仅存储 coref_coref_class="set_.*?"

如何避免:

i_ident = []
j_atr = []
find_ident = re.findall(r'<coref.*?coref_coref_class="set_.*?coref_mentiontype="ne".*?coref_coreftype="ident".*?>(.*?)</coref>', read_dataset, re.S)
ident_list = list(map(lambda x: x.replace('\n', ' '), find_ident))
for i in range(len(ident_list)):
i_ident.append(str(ident_list[i]))

find_atr = re.findall(r'<coref.*?coref_coreftype="atr".*?>(.*?)</coref>', read_dataset, re.S)
atr_list = list(map(lambda x: x.replace('\n', ' '), find_atr))
#print(coref_list)
for i in range(len(atr_list)):
j_atr.append(str(atr_list[i]))

print(i_ident)
print()
print(j_atr)

最佳答案

我将您的数据集文件减少为:

A
<coref coref_coref_class="set_0" coref_mentiontype="ne" markable_scheme="coref" coref_coreftype="ident">
B
</coref>
<coref coref_coref_class="set_0" coref_mentiontype="np" markable_scheme="coref" coref_coreftype="atr">
C
</coref>
D
<coref coref_coreftype="ident" coref_coref_class="empty" coref_mentiontype="ne" markable_scheme="coref">
E
</coref>
F

并尝试了这段代码,它与您提供的几乎相同:

import re

with open ("test_dataset.log", "r") as myfile:
read_dataset = myfile.read()

i_ident = []
j_atr = []
find_ident = re.findall(r'<coref.*?coref_coref_class="set_.*?coref_mentiontype="ne".*?coref_coreftype="ident".*?>(.*?)</coref>', read_dataset, re.S)
ident_list = list(map(lambda x: x.replace('\n', ' '), find_ident))
for i in range(len(ident_list)):
i_ident.append(str(ident_list[i]))

find_atr = re.findall(r'<coref.*?coref_coreftype="atr".*?>(.*?)</coref>', read_dataset, re.S)
atr_list = list(map(lambda x: x.replace('\n', ' '), find_atr))
#print(coref_list)
for i in range(len(atr_list)):
j_atr.append(str(atr_list[i]))

print(i_ident)
print()
print(j_atr)

得到了这个输出,这对我来说似乎是正确的:

[' B ']

[' C ']

关于python - 如何在Python中使用正则表达式从数据集中提取数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755539/

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