Python - 用“”拆分字符串

时间:2014-05-10 17:07:25

标签: python string parsing

我知道这是一个基本问题,但我在解析某些文字方面遇到了困难。

那么系统将如何运作,让我们采取以下示例:

> set title "Hello world" 

我应该得到:

["set title", "Hello world"] 

问题是,我需要拆分字符串,以便在我输入时,例如:

> plot("data.txt"); 

应该给我:

["plot", "data.txt"] 

我尝试了以下内容:

While True:
       command = raw_input(">");
       parse = command.split("' '");

       if(parse[0] == "set title"):
               title = parse[1];

但这不起作用,甚至不会认识到我正在进入"设置标题"

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

您不需要split。您需要re

import re
def parse(command):
    regex = r'(.*) "(.*)"'
    items = list(re.match(regex, command).groups())
    return items

if __name__ == '__main__':
    command = 'set title "Hello world"'
    print parse(command)

返回

['set title', 'Hello world']

答案 1 :(得分:0)

要按空格分割字符串,您需要使用

parse = command.split(' ')

输入"设置标题"你会得到一个像这样的解析数组

['set', 'title']

其中parse[0] == 'set'parse[1] == 'title'

如果您想测试您的字符串是否以" set title"开头,请检查command字符串本身或检查parse的前两个索引。

答案 2 :(得分:0)

split("' '")

将拆分三个字符的单引号,空格,单引号的文字序列,它们不会出现在command字符串中。

我认为你需要更接近这个:

command, content = command.split(" ", 1)
if command == "plot":
    plot(command[1:-1])
elif command == "set":
    item, content = content.split(" ", 1)
        if item == "title":
            title = content[1:-1]
...

注意使用第二个参数告诉split多少次这样做; 'set title "foo"'.split(" ", 1) == ['set', 'title "foo"']。确切地说,您实现的方式取决于您希望能够解析的事物的范围。