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

时间:2016-11-06 17:16:20

标签: python parsing nlp line cyk

对于我正在创建的方法,我想要在一行的末尾找到一个单词,然后我想在它的左边添加找到的单词(在行的开头)到一个空格字符)到一个数组。

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

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

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

语法文件中的一行看起来像,例如:

VP - > V NP

NP - > Ñ

VP - > V PP

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

2 个答案:

答案 0 :(得分:0)

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

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

fleas
dog

答案 1 :(得分: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]

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

我希望这会有所帮助。