web-dev-qa-db-ja.com

Pythonで文字列をリストに変換する方法は?

文字列をリストに変換するにはどうすればよいですか?

文字列はtext = "a,b,c"のようなものだとしましょう。変換後、text == ['a', 'b', 'c']、できればtext[0] == 'a'text[1] == 'b'

86
Clinteney Hui

このような:

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

または、文字列が安全であると信頼できる場合は、eval()を使用できます。

>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
146
Cameron

既存の回答に追加するだけです。うまくいけば、将来このようなものに遭遇するでしょう。

>>> Word = 'abc'
>>> L = list(Word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'

しかし、あなたが今扱っているもの、@ Cameron の答えに行きます。

>>> Word = 'a,b,c'
>>> L = Word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'
120
Droogans

次のPythonコードは、文字列を文字列のリストに変換します。

import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)
28
Bryan

私はあなたとは思わない必要 to

Pythonでは、文字列とリストは非常に似ているため、文字列をリストに変換する必要はほとんどありません

タイプを変更する

文字配列であるはずの文字列が本当にある場合は、次のようにします。

In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']

タイプを変更しない

文字列はPythonのリストに非常に似ていることに注意してください

文字列にはリストのようなアクセサがあります

In [3]: x[0]
Out[3]: 'f'

文字列はリストのように反復可能です

In [4]: for i in range(len(x)):
...:     print x[i]
...:     
f
o
o
b
a
r

TLDR

文字列はリストです。ほぼ。

14
firelynx

実際に配列が必要な場合:

>>> from array import array
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> myarray = array('c', text)
>>> myarray
array('c', 'abc')
>>> myarray[0]
'a'
>>> myarray[1]
'b'

配列を必要とせず、文字のインデックスでのみ検索する場合は、不変であるという事実を除き、リストと同様に文字列が反復可能であることに注意してください。

>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
7
joaquin

スペースで分割する場合は、.split()を使用できます。

a = 'mary had a little lamb'
z = a.split()
print z

出力:

['mary', 'had', 'a', 'little', 'lamb'] 
4
vivek mishra
m = '[[1,2,3],[4,5,6],[7,8,9]]'

m= eval(m.split()[0])

[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
1
Josué

a="[[1, 3], [2, -6]]"という形式のstringを変換するには、まだ最適化されていないコードを書きました。

matrixAr = []
mystring = "[[1, 3], [2, -4], [19, -15]]"
b=mystring.replace("[[","").replace("]]","") # to remove head [[ and tail ]]
for line in b.split('], ['):
    row =list(map(int,line.split(','))) #map = to convert the number from string (some has also space ) to integer
    matrixAr.append(row)
print matrixAr
1
Khalid

私は通常使用します:

l = [ Word.strip() for Word in text.split(',') ]

stripは単語の周りのスペースを削除します。

1
Yannick Loiseau
# to strip `,` and `.` from a string ->

>>> 'a,b,c.'.translate(None, ',.')
'abc'

文字列には組み込みのtranslateメソッドを使用する必要があります。

詳細については、Pythonシェルでhelp('abc'.translate)と入力してください。

0
N 1.1

機能的なPythonの使用:

text=filter(lambda x:x!=',',map(str,text))
0
Eratosthenes

すべての答えは良いです。別の方法があります。それはリストの理解です。以下の解決策をご覧ください。

u = "UUUDDD"

lst = [x for x in u]

コンマ区切りリストの場合は、次を実行します

u = "U,U,U,D,D,D"

lst = [x for x in u.split(',')]
0
Zeus