Python - 在给定输入的同一行查找单词

Python - Finding word on same line as given input

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

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

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 -> N

VP -> V PP

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

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

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

fleas
dog

一个想法...

您可以通过“->”分隔符和 trim 个空格来拆分行:

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

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

然后您可以在该数组的第二项和 return 第一项中查找您的输入 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 到底是什么(字节?字符串?)但是像这样的东西可以工作。

希望对您有所帮助。