Saya ingin membuat ini menjadi daftar yang tepat dengan menambahkan koma di antara nilai-nilai dalam tanda kurung.

[119033] [656516, 34751, 2180, 656495, 66509032, 441462, 24801909, 134694146] [3220] [68313] [104735] [110685] [6432223] [565394] [519872] [] [5320377] [10855848] [11789573] [] [13745740] [101293645] [] [5464156, 94060] [] [] [] [] [6654] [2537]

Saya ingin hasilnya terlihat seperti ini

[119033], [656516, 34751, 2180, 656495, 66509032, 441462, 24801909, 134694146], [3220],[68313], [104735], [110685], [6432223], [565394], [519872], [], [5320377], [10855848], [11789573], [], [13745740], [101293645], [], [5464156, 94060], [], [], [], [], [6654], [2537] 

Dan jika memungkinkan saya juga ingin menghapus tanda kurung kosong.

-4
Celin Younan 13 Mei 2021, 04:55

4 jawaban

Jawaban Terbaik

Mungkin coba ini:

for x in list_of_data:
  if x == '[]':
    pass
  else:
    print(x)

Itu setidaknya harus menyingkirkan tanda kurung kosong. Saya tidak tahu harus berbuat apa, ini tidak terlihat seperti tipe data normal untuk Python...

-1
Peter Nielsen 13 Mei 2021, 01:59

Saya telah menganggap bahwa input yang diberikan sepenuhnya berupa string. Yang berarti

input ="[119033] [656516, 34751, 2180, 656495, 66509032, 441462, 24801909, 134694146] [3220] [68313] [104735] [110685] [6432223] [565394] [519872] [] [5320377] [10855848] [11789573] [] [13745740] [101293645] [] [5464156, 94060] [] [] [] [] [6654] [2537]"

Maka masalah Anda murni pada manipulasi string. Saya ingin memberi tahu bahwa saya tidak ingin menggunakan ekspresi Reguler dalam skenario ini dan saya hanya melanjutkan pengkodean menggunakan for dan if-else. Menggunakan Regular expressions mungkin membuat kode Anda lebih ringkas. Namun demikian, saya memulai dengan menghapus spasi dan koma yang tidak diinginkan pada titik ini dan menyimpan konten dalam 'temp' dengan menggunakan kode berikut -

temp=[(i.strip("[").strip("]").split()) for i in string.replace(", ",",").split(" ")]

print(temp)

Pernyataan print(temp) digunakan untuk men-debug & memahami tujuan yang dapat Anda hapus sesuai keinginan. Karena Anda tidak menginginkan daftar kosong, saya menangani kueri itu dalam kode berikut -

RemovedBlankLists=[]

[[RemovedBlankLists.append(j.split(",")) for j in i] for i in temp]

print(RemovedBlankLists)

Sekali lagi pernyataan print(RemovedBlankLists) digunakan untuk tujuan debugging & pemahaman yang dapat Anda hapus sesuai keinginan. Di atas menghilangkan daftar kosong dan membagi daftar di , yang akan berguna di langkah berikutnya. Bagian akhir dari kode adalah sebagai berikut -

y=[]
for i in RemovedBlankLists:
    if len(i) < 1:
        [y.append(int(j)) for j in i]
    else:
        temp = [int(j) for j in i]
        y.append(temp)
print(y)

Pernyataan print(y) terakhir akan menghasilkan output yang Anda inginkan. Selamat Coding! Beri tahu saya jika asumsi saya salah dan jika saya harus mempertimbangkan input sebagai sesuatu yang lain. Saya juga ingin membuat kode untuk alternatifnya.

0
shadowmordor 13 Mei 2021, 05:28

Jika data ini menghasilkan fungsi yang mengembalikan daftar yang dipanggil berulang kali (yang, demi kesederhanaan, saya hanya akan memanggil list_generator()), daripada menjadi string yang diformat dengan cara ini, maka Anda cukup melakukan sesuatu seperti ini:

new_list = []

for i in range(1,10):
  new_list.append(list_generator(i))

Artinya, untuk setiap panggilan list_generator dalam iterasi set Anda, Anda cukup menambahkannya ke daftar kosong. Jika Anda ingin membuang daftar kosong, cukup tambahkan tanda centang untuk daftar kosong sebelum menambahkannya.

new_list = []

for i in range(1,10):
  list_item = list_generator(i)
  if list_item: 
    new_list.append(list_item)

Tentu saja, Anda akan mengganti iterasi for for i in range(1,10) dengan iterasi apa pun yang sebenarnya Anda gunakan, serta mengganti list_generator(i) dengan fungsi dan parameter apa pun yang sebenarnya digunakan untuk menghasilkan nilai-nilai ini.

0
nick012000 13 Mei 2021, 02:12

Jika data asli berupa string, Anda bisa menggunakan str.replace() untuk menyisipkan koma.

input_str = '[119033] [656516, 34751, 2180, 656495, 66509032, 441462, 24801909, 134694146] [3220] [68313] [104735] [110685] [6432223] [565394] [519872] [] [5320377] [10855848] [11789573] [] [13745740] [101293645] [] [5464156, 94060] [] [] [] [] [6654] [2537]'
output_str = input_str.replace('] [', '], [')
print(output_str)

Perhatikan bahwa ini masih bukan format daftar yang tepat, karena itu membutuhkan [] di sekitar semuanya. Anda kemudian dapat mengonversinya menjadi daftar menggunakan ast.literal_eval().

import ast

proper_list = ast.literal_eval('[' + output_str + ']');
print(proper_list);

Anda dapat menyingkirkan tanda kurung kosong dengan pemahaman daftar.

no_empty = [el for el in proper_list if el]
0
Barmar 13 Mei 2021, 02:05