2016-09-05 17 views
1

文字列に変換されたリストの出力としてリストを返す簡単なコードを手伝ってもらえますか?リストは、このようにされていません:文字列をリストに変換する

a = u"['a','b','c']" 

をしかし、変数は次のようである:だから、

list(a) 

ではなく、次のような出力

['[', 'a', ',', 'b', ',', 'c', ']'] 

をもたらすであろう

a = '[a,b,c]' 

私はこのような入力をしたい:

['a', 'b', 'c'] 

私もast.literal_eval()機能を使用して試してみました - 私は、引数を述べValueError例外は不正な形式の文字列で取得した場所使用上。

答えて

2

このようなリストをロードする標準ライブラリはありません。しかし文字列処理でこれを簡単に行うことができます:

a.strip('[]').split(',') 

あなたのリストを提供します。

str.strip()任意のの先頭から末尾までを削除します。そのような文字が見つからなくなるまで、最初からすべて[]の文字が削除され、最後から同じ文字が削除されます。入力サンプルには十分です。

str.split()、その後は、任意の時点で別の文字列に(両端にマイナス[]文字)余りを分割コンマがあります:

>>> a = '[a,b,c]' 
>>> a.strip('[]') 
'a,b,c' 
>>> a.strip('[]').split(',') 
['a', 'b', 'c'] 
0

は私たちがハックを使用してみましょう。

import string 

x = "[a,b,c]" 

for char in x: 
    if char in string.ascii_lowercase: 
     x = x.replace(char, "'%s'" % char) 

# Now x is "['a', 'b', 'c']" 
lst = eval(x) 

文字は、それがある場合、それは周りの単一引用符付きの文字に置き換えてアルファベット(小文字)である場合、これはチェックします。

なぜこのソリューションを使用しない:?

  • が単一文字以上を持つ要素のために失敗する重複要素のために失敗します。
  • あなたは混乱し、単一引用符と二重引用符

についてなぜこのソリューションを使用するように注意する必要があります?

  • このソリューションではなく、マルタインのを使用するために何の理由はありません。とにかくそれをコーディングするのは面白かったです。

私はあなたの問題に幸運を祈ります。