2016-11-06 5 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에서 선 보인다 예를 들어, 같은 :

부사장 -> V NP

NP -> N

부사장 -> 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] 

grammarFile이 정확히 무엇인지 (바이트? 문자열?) 그러나 이것과 같은 것은 작동 할 수 있습니다.

이 정보가 도움이되기를 바랍니다. grammarFile에서 line.split ('')에 대한 :

+0

감사합니다. 이것이 내가 필요한 것입니다. –

0

줄을 공백으로 나눕니다. 이렇게하면 나타나는 순서대로 단어 목록이 제공됩니다. list [-1]은 마지막 단어이고, list [-2]는 왼쪽 단어입니다.

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

fleas 
dog 
+0

당신은 같은 의미 요소 == 목록 [-1] results.append 내 ​​편집을 확인 –

+0

([-2] 목록) 경우 볼 수있는 경우 도움이됩니다. – zenlc2000

+0

감사합니다. 이것은 유용하지만, 결과가 일관되게 내 질문에 필요한 것을 얻지 못할 것이라고 생각하지만, 분명히 명심해야 할 것입니다. –

관련 문제