如何在Python中提取三元组?

2024-09-28 22:24:33 发布

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

我正在处理一个大的文本文件。文件中有许多行,下面显示了其中的五行。你知道吗

/a/[/r/Antonym/,/c/af/afghanistan/,/c/af/pakistan/]
/a/[/r/UsedFor/,/c/en/book/,/c/en/learn/]
/a/[/r/Antonym/,/c/ar/???/,/c/ar/???/]
bad line
/a/[/r/IsA/,/c/en/island/,/c/en/land_mass/]

其中/a表示断言,/r表示关系,/c表示概念,/en/af表示语言。你知道吗

我现在要做的是只提取/en(英语)语言的三元组。我希望获得并存储在另一个文件中的输出是:

UsedFor book learn
IsA island land_mass

使用Python有什么简单的方法吗?你知道吗


Tags: 文件语言learnmassenaraf文本文件
1条回答
网友
1楼 · 发布于 2024-09-28 22:24:33

您必须解析此自定义格式。一种可能的解决方案如下:

s = """/a/[/r/Antonym/,/c/af/afghanistan/,/c/af/pakistan/]
/a/[/r/UsedFor/,/c/en/book/,/c/en/learn/]
/a/[/r/Antonym/,/c/ar/???/,/c/ar/???/]
bad line
/a/[/r/IsA/,/c/en/island/,/c/en/land_mass/]"""

for line in s.split("\n"):
    if line.startswith("/a"):
        a = line[4:-1]
        r, c1, c2 = a.split(",")
        if c1.split("/")[2] == "en" and c2.split("/")[2] == "en":
            print(" ".join((r.split("/")[2], c1.split("/")[3], c2.split("/")[3])))

输出:

UsedFor book learn
IsA island land_mass

相关问题 更多 >