2016-10-05 4 views
1

をストリップを使用するには:どのように私は文字列のリストを取得するにはマップを使用したいのですが、マップ機能で

value = '1, 2, 3' 

my_list = list(map(strip, value.split(','))) 

が、得た:

NameError: name 'strip' is not defined 

期待される結果:my_list=['1','2','3']

+1

'map()'はリストを返しません。おそらく 'list(map(...))'を意味しますか? –

+0

関連:http://stackoverflow.com/questions/12182777/is-there-a-better-way-to-use-strip-on-a-list-of-strings-python –

答えて

8

stripをされますこれらの文字列のそれぞれについて、str.strip()メソッドへの参照ではなく、まだ変数です。

あなたがここに結合していないstr.strip方法を使用することができます:あなたは、文字列で指定されたメソッドを呼び出したい場合は

>>> value = '1, 2, 3' 
>>> list(map(str.strip, value.split(','))) 
['1', '2', '3'] 

、そしてあなた:任意のstrインスタンスのために動作します

my_list = list(map(str.strip, value.split(','))) 

をそのメソッドをサポートするさまざまな型があります(アンバインドされたメソッド参照は機能しません)。operator.methodcaller() object

[v.strip() for v in value.split(',')] 
+0

パーフェクトアンサー、まずはマップを使用しています'1,2,3'を[1,2,3]リスト(map(int、value))に変換するが、私は心を変えてマップ上に固定した。しかし、リストの理解はより多くのpythonishです –

3

あなたはまた、使用して目的を達成するためにlambdaを使用することができます:あなたは出力とにかくリストオブジェクトにしたい場合は 、代わりのmap()、私は、リストの内包表記を使用したいです:

value.split(",")の各要素をパラメータxとしてlambda x:x.strip()に渡され、その後、strip()メソッドが呼び出される
my_list = map(lambda x:x.strip(), value.split(",")) 

関連する問題