2016-04-10 6 views
0

大きなテキストファイルを扱っています。ファイルには多くの行があり、そのうちの5行が以下に示されています。 /aはアサーションを意味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/] 

/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 
関連する問題