2011-10-28 13 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含む)異なる間隔があります。
  • 私は2D配列に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']