Python 字符串拆分
我正在尝试识别用户输入的字符串,比如“退出”或“添加数字”,我用的是这个:
command, data = input('>').split(" ", 1)
这个方法可以处理两个词的输入,但如果输入一个词就不行了(会出现“需要超过1个值来解包”的错误)。
有没有什么好的方法可以同时接受一个词和两个词的输入呢?
5 个回答
2
我相信一定会有人给出一个“Pythonic”的解决方案,但为什么不直接把它当作一个列表来接受,然后再检查呢?
command_data = raw_input('>').split(" ", 1)
if len(command_data) > 1:
do some brilliant stuff next
抱歉,我觉得我脑子里的C++部分有点情绪化 :)
补充一下:也许你在找的是str.partition。至少你可以保证得到一个三元组来解包。不过要注意,如果你以后给这个命令添加第二个参数,你就得找新的解决办法了。
3
这就是partition
的作用:
command, _, data = raw_input('>').partition(" ")
如果只指定了一个词,data
将会被赋值为空字符串。
2
最好的办法是建立一个解析器,但如果你只是想快速实现某个功能,你可以先列出你想允许的命令,比如:
commands = ['foo', 'bar', 'exit', 'hello world', 'add number']
然后对于每个命令,检查你的输入是否以这个命令开头,也就是用 s.startswith(command)
来判断。如果是的话,你就可以对这个命令执行相应的操作。