2011-10-28 53 views
1

我有一个存储“原始”变量:Python的操作字符串

*rawVariable =* "Hello" "World" "String 1" "String 2" "String 3" "Sting 4" 
"Hello" "World" "String 5" "String 6" "String 7" "String 8" 
"Hello" "World" "String 9" "String 10" "String 11" "String 12" 

难道我的字存储与前后双引号作为分隔符一个数组中?

我无法使用"作为分隔符。

实施例:

formattedArray = ["Hello","World","String 1","String 2","String 
3","Sting 4","Hello","World" "String 5","String 6","String 7","String 
8","Hello","World","String 9","String 10","String 11","String 12"] 

注:

  • 有字之间不同的间距(包括\n)。
  • 我将在formattedArray之后存储到二维数组中。
+1

你有什么问题?你的示例代码工作正常。 –

+0

@DavidHeffernan什么样的代码?我想他想从他的原始变量中获得数组。 – unni

+0

请更加明确地说明* rawVariable *的格式。它是一个在python行中定义的字符串(在这种情况下,它只是将各个子字符串连接起来,并且必须以大写字母分隔)?或者是包含引号的实际字符串? –

回答

1

我不是100%肯定,如果我理解你的问题,但我猜下面的代码可以帮助你:

import re 

def splitRawString(s): 
    return map(lambda x: re.sub('^"?([^"]*)"?$', r'\1', x), 
     re.split('"\s*"', s)) 

a='"Hello" "World" "String 1" "String 2" "String 3" "Sting 4" "Hello" "World" "String 5" "String 6" "String 7" "String 8" "Hello" "World" "String 9" "String 10" "String 11" "String 12"' 
print splitRawString(a) 

给出了下面的输出:

['Hello', 'World', 'String 1', 'String 2', 'String 3', 'Sting 4', 'Hello', 'World', 'String 5', 'String 6', 'String 7', 'String 8', 'Hello', 'World', 'String 9', 'String 10', 'String 11', 'String 12'] 

那是你需要的吗?

+0

是啊!谢谢!两个答案都做了同样的工作(在一定程度上),但我更喜欢这个,因为它更稳固。 – Ezylryb

1

在我看来,你只需要通过"分隔符分割字符串,并得到所有其他子(因为有趣的将空白被交织在一起):

def split_quoted_strings(s): 
    split_via_quote = s.split('"') 
    return split_via_quote[1::2] 

测试似乎得到正确的结果:

>>> a='"Hello" "World" "String 1" "String 2" "String 3" "Sting 4" "Hello" "World" "String 5" "String 6" "String 7" "String 8" "Hello" "World" "String 9" "String 10" "String 11" "String 12"' 
>>> split_quoted_string(a) 
['Hello', 
'World', 
# omitted 
'String 12']