python字符串拆分

时间:2010-01-30 16:21:52

标签: python

我正在尝试使用以下方法识别用户输入的字符串,例如“exit”或“add number”:

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

它适用于两个单词输入,但不适用于输入的一个单词(“需要多于1个值才能解压缩”)。

接受单/两个字输入的最佳方式是什么?

5 个答案:

答案 0 :(得分:3)

这是partition的用途:

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

如果只指定了一个单词,data将被分配一个空字符串。

答案 1 :(得分:2)

我确信有人会想出一个“Pythonic”解决方案,但是之后只是接受它作为列表并在之后检查它?

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

抱歉,我认为我脑中的C ++方面变得情绪化:)

编辑:也许str.partition是您正在寻找的。至少你保证打开3元组。请注意,如果您在命令中添加第二个参数,则必须找到新的解决方案。

答案 2 :(得分:2)

最佳方式是构建一个解析器,但是如果你只想要一些快速工作的东西,你可以只列出你想要允许的命令,例如:

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

然后对每个命令检查您的输入是否满足s.startswith(command)。如果是这样,你可以为该命令做适当的事情。

答案 3 :(得分:1)

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

如果您不希望将数据评估为Python表达式,请确保使用raw_input

答案 4 :(得分:1)

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