2011-10-28 54 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']