2010-01-30 4 views
2

I가 사용자를 인식하는 것을 시도하고이를 사용하여 예 : "종료"또는 "번호를 추가"와 같은 문자열을 입력 분할 :파이썬 문자열은

command, data = input('>').split(" ", 1) 

그것은 두 단어 입력을 작동하지만, 입력하지 하나 개의 단어 ("필요 포장을 푸는 데 1 개 이상의 값 ").

1/2 단어 입력을 모두 허용하는 가장 좋은 방법은 무엇입니까?

답변

2

가장 방법은 파서를 구축하는 것입니다,하지만 당신은 뭔가 빠르게 작업 할 경우 당신은 다음과 같은 허용 할 명령의 목록 수 : 다음에 대한

commands = ['foo', 'bar', 'exit', 'hello world', 'add number'] 

을 각 명령은 입력이 s.startswith(command)을 만족하는지 확인합니다. 그렇다면 해당 명령에 대해 적절한 작업을 수행 할 수 있습니다.

2

나는 누군가가 "파이썬"해결책을 생각해 낼 것이라고 확신하지만, 그것을 단지 목록으로 받아들이고 나중에 확인하는 일은 무엇이 있을까?

command_data = raw_input('>').split(" ", 1) 
if len(command_data) > 1: 
    do some brilliant stuff next 

죄송합니다, 나는 나의 뇌의 C++ 쪽이 변덕 점점 생각 :)

편집 : 어쩌면 str.partition은 당신이 찾고있는 것입니다. 최소한 푸는 데는 3 튜플이 보장됩니다. 명령에 두 번째 인수를 추가하는 경우 새 솔루션을 찾아야합니다.

1
line = raw_input('>').split(" ", 1) 
command = line[0] 
data = line[1] if len(line) > 1 else "" 

당신이 당신의 데이터가 파이썬 표현으로 평가되고 싶지 않은 경우 raw_input를 사용해야합니다.

4

Python 3을 사용하지 않는 한 사용자 입력을 위해 input 함수를 사용하지 않아야합니다. 대신 raw_input -function을 사용하십시오.

실제 질문은; 분할 결과를리스트로 검색하십시오.

목록의 첫 번째 항목이 명령이되며 다음 선택적 항목이 "인수"가됩니다.

1
command, data = (input('>') + ' ').split(" ", 1) 
3

이가 partition이 무엇이다 : 하나의 단어가 지정된 경우

command, _, data = raw_input('>').partition(" ") 

, data 빈 문자열이 할당됩니다.