0

对于我正在创建的方法,我想接收在行尾找到的单词,然后我想将找到的单词附加到它的左侧(在行的开头直到一个空格字符)到一个数组。

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

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

到目前为止,输出的数组一直都是空的。不知道我的逻辑哪里错了。

语法文件中的一行如下所示,例如:

副总裁 -> V NP

NP -> N

副总裁 -> V PP

我想将 -> 右侧的部分作为输入,并将左侧附加到一个数组中,以便在程序的其他部分中使用。

4

2 回答 2

0

在空格上分割线。这会按照它们出现的顺序为您提供一个单词列表。list[-1] 是最后一个单词,list[-2] 是它左边的单词。

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

fleas
dog
于 2016-11-06T17:41:17.040 回答
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]

我不确定 GrammarFile 到底是什么(字节?字符串?),但这样的东西可以工作。

我希望这有帮助。

于 2016-11-06T17:54:53.943 回答