如何在Python中提取三元组?

时间:2016-04-10 08:44:58

标签: 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有没有简单的方法呢?

1 个答案:

答案 0 :(得分:1)

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

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