Saya harus mengambil banyak daftar kata dalam bentuk:
['this\n', 'is\n', 'a\n', 'list\n', 'of\n', 'words\n']
dan kemudian menggunakan fungsi strip, ubah menjadi:
['this', 'is', 'a', 'list', 'of', 'words']
Saya pikir apa yang telah saya tulis akan berhasil, tetapi saya terus mendapatkan kesalahan yang mengatakan:
"'list' object tidak memiliki atribut 'strip'"
Berikut kode yang saya coba:
strip_list = []
for lengths in range(1,20):
strip_list.append(0) #longest word in the text file is 20 characters long
for a in lines:
strip_list.append(lines[a].strip())
strip_list
19 kali kemudian menambahkan garis yang dilucuti. Kode itu memiliki bau yang sangat buruk tentangnya. Juga jika Anda mendapatkan barang itu dari sebuah file, Anda harus menghapusnya saat masuk - membuat daftar besar kemudian memasukkannya ke dalam daftar besar lainnya bukanlah ide yang baik. Juga 2, kode Anda tidak harus bergantung pada mengetahui panjang kata / baris terpanjang. Mundur sedikit - apa yang ingin Anda capai? Apa yang akan kamu lakukanstrip_list
?Jawaban:
sumber
str.strip
hanya berfungsi jika Anda yakin bahwa daftar tersebut tidak berisi string unicode. Jika dapat berisi string 8-bit dan unicode, gunakanlambda s: s.strip()
seperti yang disebutkan di atas, atau gunakanstrip
fungsi yang dapat Anda impor daristrings
modul.list
, sehingga itulist(map(str.strip, my_list))
. Juga periksa itu: tautan .pemahaman daftar?
[x.strip() for x in lst]
sumber
Anda dapat menggunakan pemahaman daftar :
Atau
map
fungsinya:sumber
0
nilai di awal daftar. Meskipun saya tidak dapat membayangkan apa yang Anda coba capai dengan menempatkan mereka dalam daftar hasil yang sama ...strip_list = list(map(str.strip, lines))
seperti map () mengembalikan iterator peta. docs.python.org/3/library/functions.html#mapIni dapat dilakukan dengan menggunakan pemahaman daftar seperti yang didefinisikan dalam PEP 202
sumber
list
kemap
:)Semua jawaban lain, dan terutama tentang pemahaman daftar, bagus. Tetapi hanya untuk menjelaskan kesalahan Anda:
a
adalah anggota daftar Anda, bukan indeks. Apa yang bisa Anda tulis adalah ini:Komentar penting lainnya: Anda dapat membuat daftar kosong dengan cara ini:
Tapi ini tidak begitu berguna, karena
.append
menambahkan barang ke daftar Anda. Dalam kasus Anda, tidak berguna untuk membuat daftar dengan nilai defaut, karena Anda akan membuatnya item per item saat menambahkan string yang dilucuti.Jadi kode Anda harus seperti:
Tapi, yang pasti, yang terbaik adalah yang ini, karena ini persis sama:
Jika Anda memiliki sesuatu yang lebih rumit dari sekedar a
.strip
, letakkan ini dalam sebuah fungsi, dan lakukan hal yang sama. Itulah cara yang paling mudah dibaca untuk bekerja dengan daftar.sumber
Jika Anda perlu untuk menghapus hanya tertinggal spasi, Anda bisa menggunakan
str.rstrip()
, yang harus sedikit lebih efisien daripadastr.strip()
:sumber
Keluaran:
sumber