对于我正在创建的方法,我想要在一行的末尾找到一个单词,然后我想在它的左边添加找到的单词(在行的开头)到一个空格字符)到一个数组。
到目前为止,这是我的代码:
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
我想参与 - >的右侧部分。作为输入并将左侧附加到要在程序的其他部分中使用的数组。
答案 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]
我不确定究竟是什么语法文件(字节?字符串?)但是这样的东西可以工作。
我希望这会有所帮助。