我试图识别用户输入的字符串,例如“退出”或“加号”使用这样的:蟒蛇字符串分割
command, data = input('>').split(" ", 1)
它适用于两个字的输入,但输入的不是一个字(“需要超过1个值解包“)。
接受一个/两个字输入的最佳方式是什么?
我试图识别用户输入的字符串,例如“退出”或“加号”使用这样的:蟒蛇字符串分割
command, data = input('>').split(" ", 1)
它适用于两个字的输入,但输入的不是一个字(“需要超过1个值解包“)。
接受一个/两个字输入的最佳方式是什么?
的最好方法是建立一个分析器,但如果你只是想要的东西,迅速开展工作,你可以只是你要允许的命令,如清单:
commands = ['foo', 'bar', 'exit', 'hello world', 'add number']
那么对于每个命令检查您的输入是否满足s.startswith(command)
。如果是这样,你可以为该命令做适当的事情。
我确定有人会想出一个“Pythonic”解决方案,但接受它作为一个列表然后检查它后发生了什么?
command_data = raw_input('>').split(" ", 1)
if len(command_data) > 1:
do some brilliant stuff next
对不起,我想我的大脑的C++侧越来越喜怒无常:)
编辑:也许str.partition是你在找什么。至少你保证一个三元组解开。请注意,如果您为命令添加第二个参数,您必须找到新的解决方案。
line = raw_input('>').split(" ", 1)
command = line[0]
data = line[1] if len(line) > 1 else ""
请确保您使用raw_input
,如果你不希望自己的数据被评价为Python表达式做。
除非你使用Python 3,否则你不应该使用input
函数来进行用户输入。改用raw_input
-功能。
至于实际问题;检索分割的结果作为列表。
列表中的第一项是命令,可选的下列项目是“参数”。
command, data = (input('>') + ' ').split(" ", 1)
这是partition
是什么:
command, _, data = raw_input('>').partition(" ")
如果指定只有一个字,data
将被分配一个空字符串。