I가 사용자를 인식하는 것을 시도하고이를 사용하여 예 : "종료"또는 "번호를 추가"와 같은 문자열을 입력 분할 :파이썬 문자열은
command, data = input('>').split(" ", 1)
그것은 두 단어 입력을 작동하지만, 입력하지 하나 개의 단어 ("필요 포장을 푸는 데 1 개 이상의 값 ").
1/2 단어 입력을 모두 허용하는 가장 좋은 방법은 무엇입니까?
I가 사용자를 인식하는 것을 시도하고이를 사용하여 예 : "종료"또는 "번호를 추가"와 같은 문자열을 입력 분할 :파이썬 문자열은
command, data = input('>').split(" ", 1)
그것은 두 단어 입력을 작동하지만, 입력하지 하나 개의 단어 ("필요 포장을 푸는 데 1 개 이상의 값 ").
1/2 단어 입력을 모두 허용하는 가장 좋은 방법은 무엇입니까?
가장 방법은 파서를 구축하는 것입니다,하지만 당신은 뭔가 빠르게 작업 할 경우 당신은 다음과 같은 허용 할 명령의 목록 수 : 다음에 대한
commands = ['foo', 'bar', 'exit', 'hello world', 'add number']
을 각 명령은 입력이 s.startswith(command)
을 만족하는지 확인합니다. 그렇다면 해당 명령에 대해 적절한 작업을 수행 할 수 있습니다.
나는 누군가가 "파이썬"해결책을 생각해 낼 것이라고 확신하지만, 그것을 단지 목록으로 받아들이고 나중에 확인하는 일은 무엇이 있을까?
command_data = raw_input('>').split(" ", 1)
if len(command_data) > 1:
do some brilliant stuff next
죄송합니다, 나는 나의 뇌의 C++ 쪽이 변덕 점점 생각 :)
편집 : 어쩌면 str.partition은 당신이 찾고있는 것입니다. 최소한 푸는 데는 3 튜플이 보장됩니다. 명령에 두 번째 인수를 추가하는 경우 새 솔루션을 찾아야합니다.
line = raw_input('>').split(" ", 1)
command = line[0]
data = line[1] if len(line) > 1 else ""
당신이 당신의 데이터가 파이썬 표현으로 평가되고 싶지 않은 경우 raw_input
를 사용해야합니다.
Python 3을 사용하지 않는 한 사용자 입력을 위해 input
함수를 사용하지 않아야합니다. 대신 raw_input
-function을 사용하십시오.
실제 질문은; 분할 결과를리스트로 검색하십시오.
목록의 첫 번째 항목이 명령이되며 다음 선택적 항목이 "인수"가됩니다.
command, data = (input('>') + ' ').split(" ", 1)
이가 partition
이 무엇이다 : 하나의 단어가 지정된 경우
command, _, data = raw_input('>').partition(" ")
, data
빈 문자열이 할당됩니다.