2012-11-24 4 views
0

약간의 도움이 필요합니다. 내가 파이썬으로 명령 프롬프트의 종류를 프로그램하기 위해 노력하고있어 나는 라인에 텍스트 파일을 분할해야파이썬 : 분할 및 분할

는 문자열로 분할

예 :

분할

command1 var1 var2; 
command2 (blah, bleh); 
command3 blah (b bleh); 
command4 var1(blah b(bleh * var2)); 

입력 :

line1=['command1','var1','var2'] 

line2=['command2'] 
line2_sub1=['blah','bleh'] 

line3=['blah'] 
line3_sub1=['b','bleh'] 

line4=['command4'] 
line4_sub1=['blah','b'] 
line4_sub2=['bleh','var2'] 
line4_sub2_operand=['*'] 

전혀 ossible? 만약 그렇다면 어떻게 설명 할 수 있습니까? 아니면 저에게 할 코드 조각을 줄 수 있습니까?

고마워,

+1

지금까지 코딩 된 내용은 무엇입니까? –

+2

한 가지 일방적이어야하고 다른 일은 다른 방식이어야하는 이유에 관해서는 운이나 이유가 없습니다. 예 : 왜'command3'은 완전히 빠져 있습니까? 첫 번째 줄에는 'command1'이 있고 두 번째 줄에는 'command 2'가있는 이유는 무엇입니까? – mgilson

+3

'line1','line2' 등과 같은 이름을 가진 변수를 사용하는 것은 파일에서 처리 된 데이터를 저장하는 올바른 방법이 아닙니다. 결과를 저장하기위한 데이터 구조, 아마도 목록 목록 또는 사전 목록이 필요합니다.줄과 텍스트 파일을 줄로 나누고 줄을 단어로 나누는 것은 매우 쉽습니다. 그러나 물건을 분할하는 것 이상의 입력을 처리하는 방법에 대해 상당히 복잡하고 아마도 잘못 정의 된 규칙이있는 것처럼 보입니다. 더 자세히 설명해야합니다. –

답변

1

언어에는 추론 할 수없는 것으로 나타납니다, 지적되고있다. 내가 할 수있는 일은 pyparsing으로 당신을 가리킨다. 나는 이것과 비슷한 문제를 해결하려고한다면 내가 사용하는 것이다. 여기는 pyparsing example for the python language이다.

0

다른 사람들과 마찬가지로 언어가 혼란스럽게 설계되어 있으므로 간단하게해야합니다. 그러나 나는 당신이 찾고있는 것을 당신에게 줄 것이고 당신이 그것을 어려운 길로 이해하게 할 것입니다.

표준 파이썬 파일 객체 (open()에 의해 반환 됨)는 행의 반복자이며 파이썬 문자열 클래스의 split() 메소드는 문자열을 부분 문자열 목록으로 분할합니다. 그래서 당신은 아마 같은 것을 시작하는 것이 좋습니다 :

for line in command_file 
    words = line.split(' ') 

http://docs.python.org/3/library/string.html

0

당신은 라인으로 파일 라인을 읽기 위해이 코드를 사용하여 단어 사이에 공백을 분할 할 수있다. 간단한 프로그래밍 언어를 쓰고 무슨 말을하는지

a= True 
f = open(filename) 
while a: 
    nextline=f.readline() 
    wordlist= nextline.split("") 
    print(wordlist) 
    if nextline=="\n": 
     a= False 
0

. 자신이하는 일을 안다면 엄청난 어려움이 없지만, 대부분의 사람들이 학기를 마치고 학기를 마치기 만하면됩니다. 사실 여러 가지 유형의 어휘 단위를 가지고있어 재귀 적으로 재귀적인 구문을 사용한다는 것은 스캐너와 파서가 필요하다는 것을 의미합니다. 이 작업을 직접 수행하고 싶다면 this을 시작하는 것이 좋지 않을 수도 있습니다.

문법을 단순화하여 각 명령의 수가 고정 된 수의 인수 만 갖는 경우 regular expressions을 사용하여 개별 명령의 구문을 나타낼 수 있습니다.

사진을 찍어주세요. 하룻밤 사이에 모든 것이 스스로 작동 할 것이라고 기대하지 마십시오.