2016-04-10 18 views
0

Büyük bir metin dosyasıyla uğraşıyorum. Dosyada, beşinin aşağıda gösterildiği birçok satır var. /a bir onaylama anlamınaPython'da üçlüsü nasıl çekilir?

/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 kavramını ifade eder, ilişkileri demektir ve /en veya /af dili demektir.

Şimdi yapmak istediklerim sadece /en (İngilizce) dili için üçlü ayıklamaktır. Ben almak ve başka bir dosyaya saklanır isteyen çıkış şunlardır:

UsedFor book learn 
IsA island land_mass 

Python kullanarak bunu yapmak için herhangi bir kolay yolu var mı?

+0

* Artık * Eğer daha net hale getirdik. Biçimi ayrıştırmak için henüz kendiniz hiç girişimde bulundunuz mu? –

+0

Evet, ama önemsiz. Aşağıdaki cevabın yardımıyla şimdi deniyorum ama hala istisnalar var. – flyingmouse

cevap

1

Bu özel biçimi ayrıştırmanız gerekecektir. Olası bir çözüm bu gibi görünebilir:

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]))) 

Çıktı:

UsedFor book learn 
IsA island land_mass 
İlgili konular