2013-03-16 61 views
1

我有保存在一個文本文件格式提取和使用python

VP VB go 
NP PRP$ your NN left 

這兩條線解析。 我想訪問該文本文件,然後打印這個下面的結果在一個新的文本文件

NP NN left 

幫助我如何使用這個蟒蛇。

感謝您的任何幫助提前

+1

我們在什麼基礎上選擇從文本文件中選擇'NP NN left'?沒有這樣的解釋,'print('NP NN left')'是一個有效的解決方案。 – unutbu 2013-03-16 22:19:11

+0

@unutbu我想打印所有那些在行的開頭有NP的模式和NN在同一行的一個詞之前的模式。 – Mcolorz 2013-03-16 22:26:20

回答

0

編輯:這是更好嗎?

f=open("myfile") 
#read all lines of the file and remove newline characters 
a=[i.strip() for i in f.readlines()] 
f.close() 

for i in a: 
    i=i.split() 
    n=-1 
    try: 
    n=i.index("NN") 
    except: 
    pass 
    if n!=-1 and n!=len(i)-1 and i[0]=="NP": 
    print i[0], i[n], i[n+1] 
+0

該文件有1000行這些類型,並且NP和NN之間的單詞數量不固定,因此使用數組通過給出索引並指定第一行中的內容不可能是這樣 – Mcolorz 2013-03-16 22:56:50

1

如果我正確地解釋你,你想要的

NP NN word 

所有情況下在這種情況下,你可以使用正則表達式表達式查找NP,NN,以及隨後的一句話:

import re 
f = open('file.txt') 
regex = r'^(NP).*?(NN) (\w+).*?$' 
for line in f: 
    try: ' '.join(re.search(regex, line).groups()) 
    except AttributeError: pass