2016-11-06 27 views
0

对于我创建的一种方法,我想在单词末尾找到一个单词,然后我想要将发现的单词附加到左侧(在行的开头直到一个空格字符)到一个数组。Python - 在给定输入的同一行上查找单词

这是到目前为止我的代码:

def ruleElements(factor): 
    # Creates list of RHS and LHS rule elements 
    results = [] 

    # If RHS factor is found in grammar, append corresponding LHS. 
    for line in grammarFile: 
     start = line.find(0) 
     end = line.find(' ', start) 
     if factor in line: 
      results.append(line[start:end]) 

    return results 

到目前为止输出的阵列出现空所有的时间。不知道我的逻辑错在哪里。

在grammarFile甲行看起来像,例如:

VP> - V NP

NP - >Ñ

VP - > V PP

我想利用部分在 - >的右侧作为输入,并将左侧追加到要在程序的其他部分中使用的数组。

回答

0

一个想法......

您可以分割由线“ - >”分隔符和内饰空间:

line_items = [x.strip() for x in line.split('->')] 

# Splits 'VP -> V PP' into ['VP', 'V PP'] 

那么你可以看看你的输入factor第二这个数组的项目,并返回第一个项目像这样:

for line in grammarFile: 
    line_items = [x.strip() for x in line.split('->')] 
    if factor == line_items[1]: 
     return line_items[0:1] 

我不是确定语法文件究竟是什么(字节?字符串?),但这样的事情可以工作。

我希望这会有所帮助。

+0

谢谢。这是我需要的。 –

0

拆分空格上的行。这会按照它们出现的顺序给出一个单词列表。 list [-1]是最后一个单词,list [-2]是它左侧的单词。

myStr = 'My dog has fleas' 
words = myStr.split(' ') 
print(words[-1], words[-2]) 

fleas 
dog 
+0

你的意思是这样的: 为line.split(”“)在grammarFile: 如果因子==列表[-1] results.append(名单[-2]) –

+0

检查我的编辑,看它是否帮助。 – zenlc2000

+0

谢谢。这很有用,但我不认为结果会一直让我满意我的问题,但我一定会牢记这一点。 –

相关问题