Bagaimana Anda mengubah string menjadi daftar?
Katakanlah string itu seperti text = "a,b,c". Setelah konversi, text == ['a', 'b', 'c']dan mudah-mudahan text[0] == 'a', text[1] == 'b'?
Bagaimana Anda mengubah string menjadi daftar?
Katakanlah string itu seperti text = "a,b,c". Setelah konversi, text == ['a', 'b', 'c']dan mudah-mudahan text[0] == 'a', text[1] == 'b'?
Jawaban:
Seperti ini:
>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]
Sebagai alternatif, Anda dapat menggunakan eval()jika Anda percaya string itu aman:
>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
Hanya untuk menambahkan jawaban yang ada: mudah-mudahan, Anda akan menemukan sesuatu yang lebih seperti ini di masa mendatang:
>>> word = 'abc'
>>> L = list(word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'
Tapi apa yang Anda hadapi sekarang , ikuti jawaban @ Cameron .
>>> word = 'a,b,c'
>>> L = word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'
Kode Python berikut akan mengubah string Anda menjadi daftar string:
import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)
jsonmisalnya:json.loads(teststr)
Dalam python Anda jarang perlu mengonversi string menjadi daftar, karena string dan daftar sangat mirip
Jika Anda benar-benar memiliki string yang seharusnya berupa array karakter, lakukan ini:
In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']
Perhatikan bahwa String sangat mirip dengan list di 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
String adalah daftar. Hampir.
Jika Anda ingin memisahkan spasi, Anda dapat menggunakan .split():
a = 'mary had a little lamb'
z = a.split()
print z
Keluaran:
['mary', 'had', 'a', 'little', 'lamb']
(), yaitu tidak ada sama sekali.
Jika Anda benar-benar menginginkan array:
>>> 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'
Jika Anda tidak memerlukan array, dan hanya ingin melihat karakter Anda berdasarkan indeks, ingat string adalah iterable, seperti daftar kecuali fakta bahwa ia tidak dapat diubah:
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
Semua jawaban bagus, ada cara lain untuk melakukannya, yaitu pemahaman daftar, lihat solusi di bawah ini.
u = "UUUDDD"
lst = [x for x in u]
untuk daftar yang dipisahkan koma lakukan hal berikut
u = "U,U,U,D,D,D"
lst = [x for x in u.split(',')]
Saya biasanya menggunakan:
l = [ word.strip() for word in text.split(',') ]
yang stripruang menghapus sekitar kata-kata.
Untuk mengonversi stringmemiliki formulir yang a="[[1, 3], [2, -6]]"saya tulis namun kode yang belum dioptimalkan:
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
Menggunakan Python fungsional:
text=filter(lambda x:x!=',',map(str,text))
Contoh 1
>>> email= "myemailid@gmail.com"
>>> email.split()
#OUTPUT
["myemailid@gmail.com"]
Contoh 2
>>> email= "myemailid@gmail.com, someonsemailid@gmail.com"
>>> email.split(',')
#OUTPUT
["myemailid@gmail.com", "someonsemailid@gmail.com"]
split()adalah temanmu disini. Saya akan membahas beberapa aspek split()yang tidak tercakup oleh jawaban lain.
split(), itu akan memisahkan string berdasarkan karakter spasi (spasi, tab, dan baris baru). Spasi kosong di depan dan di belakang akan diabaikan. Selain itu, spasi berurutan diperlakukan sebagai pemisah tunggal.Contoh:
>>> " \t\t\none two three\t\t\tfour\nfive\n\n".split()
['one', 'two', 'three', 'four', 'five']
split()perilakunya sangat berbeda dari perilaku defaultnya. Dalam hal ini, pembatas depan / belakang tidak diabaikan, pembatas berulang tidak "digabungkan" menjadi satu.Contoh:
>>> ",,one,two,three,,\n four\tfive".split(',')
['', '', 'one', 'two', 'three', '', '\n four\tfive']
Jadi, jika pengupasan spasi putih diinginkan saat memisahkan string berdasarkan pemisah non-spasi, gunakan konstruksi ini:
words = [item.strip() for item in string.split(',')]
Contoh:
>>> "one,two,three,,four".split(',,')
['one,two,three', 'four']
Untuk menggabungkan beberapa pembatas menjadi satu, Anda perlu menggunakan re.split(regex, string) pendekatan. Lihat posting terkait di bawah.