2011-03-17 56 views

回答

2
​​

如果它總是第8列應該可以工作。

如果tr位置是可變的,你可以做

mylist = [] 
for line in myfile: 
    items = line.split() 
    mylist.append(items[items.index("tr")+1]) 
+2

更好'line.split('tr')[1] .split()[0]'。 – 2011-03-17 15:14:21

+0

@junjanes:非常聰明!你應該發佈這個答案。 – 2011-03-17 15:15:54

+0

我會留給你,因爲你的答案是觸發器:) – 2011-03-17 15:17:01

1

你的問題不是很清楚。這是你在追求什麼?

[line.split()[7] for line in open("abc.txt")] 

它從每一行返回第八個「單詞」。

0

如果我理解正確的話,這樣的事情應該做的工作(未測試):

resultArray = [] 
for aString in yourFile: 
    anArray = aString.split() 
    for i in range(0, len(anArray) - 1): //-1 in case tr is at the end of array 
     if anArray[i] == 'tr': 
      resultArray.append(anArray[i + 1]) 
0
from operator import itemgetter 

# tr value is in the 8th column 
tr = itemgetter(7) 

print map(tr, (line.split() for line in myfile.readlines())) 
0

一個可以嘗試以下方法:

def filter_words(filename, magic_word): 
    with open(filename) as f: 
     all_words = f.read().strip().split() 
     filtered_words = [] 
     i = 0 
     while True: 
      try: 
       i = all_words.index(magic_word, i) + 1 
       filtered_words.append(all_words[i]) 
      except IndexError, ValueError: 
       break 
     return filtered_words 

這種算法不失敗案例'tr'恰好是提供的文本文件中的最後一個單詞。

實施例:

>>> filter_words('abc.txt', 'tr') 
['vh', 'yh', 'ph', 'oh', 'kh'] 
2

可以將行作爲之前tr和後tr分割並獲得在該第二部分中的第一個字。

[ line.split(' tr ')[1].split()[0] for line in file ] 

如果有多於一個的tr,表達收集後的第一個字。另外,這一個收集最後tr後詞語的一行:

[ line.split(' tr ')[-1].split()[0] for line in file ] 
0

會不會是簡單的使用正則表達式?

如果「我們」,「RT」,「重」,「TR」真的是不斷在他們的地方:

import re 

ch = ''' 
we 2 rt 3 re 3 tr vh kn mo 
we 3 rt 5 re 5 tr yh kn me 
we 4 rt 6 re 33 tr ph kn m3 
we 5 rt 9 re 34 tr oh kn me 
we 6 rt 8 re 32 tr kh kn md''' 

print re.findall('(?<= tr)([^ ]+)',ch) 

如果沒有,那麼該位置的嚴格的標準來確定要釣什麼:

import re 

ch = ''' 
we 2 rt 3 re 3 tr vh kn mo 
we 3 rt 5 re 5 tr yh kn me 
we 4 rt 6 re 33 tr ph kn m3 
we 5 rt 9 re 34 tr oh kn me 
we 6 rt 8 re 32 tr kh kn md''' 

print [ mat.group(1) 
     for mat in re.finditer('^(?:\w+ \d+){3}\w+ ([^ ]+) .+',ch,re.M)] 
相關問題