Python 字符串拆分

1 投票
5 回答
3841 浏览
提问于 2025-04-15 18:40

我正在尝试识别用户输入的字符串,比如“退出”或“添加数字”,我用的是这个:

 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) 来判断。如果是的话,你就可以对这个命令执行相应的操作。

撰写回答