2016-04-10 57 views
0

我正在处理一个大的文本文件。文件中有很多行,其中五个显示在下面。如何在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的简单方法?

+0

*现在*您做更清晰。你有没有尝试过自己解析格式? –

+0

是的,但它是微不足道的。我正在尝试下面的答案,但仍然有例外。 – flyingmouse

回答

1

你将不得不解析这个自定义格式。一个可能的解决办法是这样的:

s = """https://stackoverflow.com/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 
相关问题