2016-04-10 56 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 
相關問題