2011-03-17 112 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)] 
相关问题