2016-04-10 2 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 
Смежные вопросы