Saya mencoba membaca baris file teks ke dalam daftar atau array dengan python. Saya hanya perlu dapat mengakses item mana pun dalam daftar atau array secara individual setelah dibuat.
File teks diformat sebagai berikut:
0,0,200,0,53,1,0,255,...,0.
Di mana di ...
atas, di sana file teks aktual memiliki ratusan atau ribuan lebih banyak item.
Saya menggunakan kode berikut untuk mencoba membaca file ke dalam daftar:
text_file = open("filename.dat", "r")
lines = text_file.readlines()
print lines
print len(lines)
text_file.close()
Output yang saya dapatkan adalah:
['0,0,200,0,53,1,0,255,...,0.']
1
Rupanya itu membaca seluruh file menjadi daftar hanya satu item, bukan daftar item individual. Apa yang saya lakukan salah?
Jawaban:
Anda harus membagi string Anda ke daftar nilai menggunakan
split()
Begitu,
sumber
.csv
berkas (seperti yang disebutkan oleh OP), misalnya, file yang berisi karakter abjad 3 demi baris (a,b,c
,d,e,f
, dll) dan menerapkan prosedur yang dijelaskan di atas apa yang Anda dapatkan adalah daftar seperti ini:['a', 'b', 'c\nd', 'e', ... ]
(perhatikan itemnya'c\nd'
). Saya ingin menambahkan bahwa, masalah di atas tidak berkepanjangan, prosedur ini meruntuhkan data dari setiap baris dalam satu daftar besar, biasanya bukan yang saya inginkan saat memproses file data berorientasi rekaman.csv
modul atau parser lain yang adaAnda juga dapat menggunakan loadtxt seperti numpy
sumber
dtype : data-type
parameter. docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html Pandas read_csv sangat mudah digunakan. Tapi saya tidak melihat cara untuk menentukan format untuk itu. Itu membaca mengapung dari file saya, sedangkan saya membutuhkan string. Terima kasih @ Tsu untuk menunjukkan loadtxt.Jadi, Anda ingin membuat daftar daftar ... Kita harus mulai dengan daftar kosong
selanjutnya, kita membaca konten file, baris demi baris
Kasing penggunaan umum adalah data kolom, tetapi unit penyimpanan kami adalah baris file, yang telah kami baca satu per satu, jadi Anda mungkin ingin mengubah daftar daftar Anda. Ini bisa dilakukan dengan idiom berikut
Penggunaan umum lainnya adalah memberi nama untuk setiap kolom
sehingga Anda dapat beroperasi pada item data yang homogen
Sebagian besar dari apa yang saya tulis dapat dipercepat menggunakan
csv
modul, dari perpustakaan standar. Modul pihak ketiga lainnya adalahpandas
, yang memungkinkan Anda mengotomatisasi sebagian besar aspek analisis data tipikal (tetapi memiliki sejumlah dependensi).Pembaruan Sementara di Python 2
zip(*list_of_lists)
mengembalikan daftar daftar yang berbeda (berubah), dalam Python 3 situasinya telah berubah danzip(*list_of_lists)
mengembalikan objek zip yang tidak dapat disubkripsikan.Jika Anda membutuhkan akses yang diindeks, Anda dapat menggunakan
yang memberi Anda daftar daftar di kedua versi Python.
Di sisi lain, jika Anda tidak memerlukan akses yang diindeks dan yang Anda inginkan hanyalah membuat kamus yang diindeks dengan nama kolom, objek zip baik-baik saja ...
sumber
csv
modul ...Pertanyaan ini menanyakan cara membaca konten nilai yang dipisahkan koma dari file ke daftar yang dapat diubah:
0,0,200,0,53,1,0,255,...,0.
Cara termudah untuk melakukannya adalah dengan
csv
modul sebagai berikut:Sekarang, Anda dapat dengan mudah beralih
spamreader
seperti ini:Lihat dokumentasi untuk contoh lebih lanjut.
sumber