2016-08-05 24 views
-2

コンマ倍数を分割します。これらの状況でPythonは私はこのようなCSV文字列を持っている

foo = "value0,value1,,,value4".split(",") 

スプリット:

def test(foo): 
    var0 = foo[0] 
    var1 = foo[1] 
    var2 = foo[2]  
    var3 = foo[3] 
    var4 = foo[4] 
return 

問題を、私はこのようないくつかの欠損値を持つことができるということです。そして、私は、配列を取り、いくつかの内部変数にこれらの値を割り当てる機能をしました

print(foo) # ['value0','value1','value4'] 

だから私は私の関数を呼び出すとき、それは動作しないとvalue4が誤って(それがVAR4に関連付けられている必要があります)VAR2に関連付けられています。小さな配列を作成します。

分割して空の要素を作成する方法はありますか?任意のヒントありがとう。

+3

*はこれらの状況でスプリット小さいアレイを作成し、所望の結果を生成して使用していたが*本当に?私が '' value0、value1 ,,, value4 "'を分割した場合、私は '['value0'、 'value1'、 ''、 'value4']'を得ます。これは私が期待しているものです – NullUserException

+0

私はpython 2.7、私は完全にそれらを分割することができます。 –

+0

@LingboTangこれはPythonのバージョンに関係なく同じ方法で動作します。私は、OPが何をしているのか分からない。 – NullUserException

答えて

0

文字列を分割した後に空の文字列を削除/フィルタリングする必要があります。また、アイテムの長さに気付かないため、文字列を保存するために辞書を使用できます。その後

>>> foo = "value0,value1,,,value4" 
>>> my_vars = {'var{}'.format(i):j for i, j in enumerate(foo.split(',')) if j} 
>>> my_vars 
{'var4': 'value4', 'var1': 'value1', 'var0': 'value0'} 

あなたは、単純なインデックスを使用してアイテムを簡単にアクセスできます:

>>> my_vars['var1'] 
'value1' 
+0

を閉じるために投票、彼の質問はとにかく混乱さ – NullUserException

+0

@NullUserExceptionは、我々がアクセスしたい'使用名前のあるアイテムに!整数インデックスだけではありません。 – Kasramvd

+0

Trueですが、 'var1'、' var2、 '...' varn'を実行していると、名前はむしろ役に立たないようです。 – NullUserException

0

だけで、それは私の上で正常に動作し、splitsplitlinesを使用ここで

my_vars = {'var{}'.format(i):j for i, j in enumerate(mystr.split(',')) if j} 

はデモですシステム またはこれを試すことができます

for lines in foo.splitlines(): 
    print (lines.split(',')) 

この結果を生成する

['value0', 'value1', '', '', 'value4'] 

FOOたfoo = "value0,value1,,,value4"

私は、Python 3とfoo.split(',')

関連する問題