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)
json
misalnya: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 strip
ruang menghapus sekitar kata-kata.
Untuk mengonversi string
memiliki 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.