Saya memiliki output dari perintah dalam bentuk tabel. Saya parsing output ini dari file hasil dan menyimpannya dalam sebuah string. Setiap elemen dalam satu baris dipisahkan oleh satu atau lebih karakter spasi, jadi saya menggunakan ekspresi reguler untuk mencocokkan 1 atau lebih spasi dan membaginya. Namun, ruang dimasukkan di antara setiap elemen:
>>> str1="a b c d" # spaces are irregular
>>> str1
'a b c d'
>>> str2=re.split("( )+", str1)
>>> str2
['a', ' ', 'b', ' ', 'c', ' ', 'd'] # 1 space element between!!!
Apakah ada cara yang lebih baik untuk melakukan ini?
Setelah setiap perpecahan str2
ditambahkan ke daftar.
'str2'
str1.split()
. Tidak perlu regex.Jawaban:
Dengan menggunakan
(
,,)
Anda menangkap grup, jika Anda cukup menghapusnya, Anda tidak akan mengalami masalah ini.Namun tidak perlu untuk regex,
str.split
tanpa pembatas yang ditentukan akan membaginya dengan spasi putih untuk Anda. Ini akan menjadi cara terbaik dalam hal ini.Jika Anda benar-benar ingin regex, Anda dapat menggunakan ini (
'\s'
mewakili spasi dan lebih jelas):atau Anda dapat menemukan semua karakter non-spasi putih
sumber
str.split
jelas yang terbaik: D['', 'a', 'b', 'c', 'de', '']
str1.split()
string.split()
adalah sebuah opsi. Saya bertanya apakah itu bisa dilakukan dengan regex juga?re.findall
opsi?The
str.split
Metode akan secara otomatis menghapus semua spasi putih di antara item:Documents ada di sini: http://docs.python.org/library/stdtypes.html#str.split
sumber
str.split()
mungkin merupakan pilihan terbaik untuk sesuatu yang ringan seperti ini.Saat Anda menggunakan
re.split
dan pola perpecahan berisi grup penangkap, grup dipertahankan dalam output. Jika Anda tidak menginginkan ini, gunakan grup yang tidak menangkap sebagai gantinya.sumber
str.split
mungkin lebih baik untuk contoh Anda. Saya hanya ingin menjelaskan mengapa Anda mendapatkan perilaku yang Anda lakukan.Sebenarnya sangat sederhana. Coba ini:
sumber
stringToSplit.split()