Memisahkan Teks Dipisahkan Koma Tidak Termasuk Petikan
Apabila memproses teks yang dipisahkan koma dengan petikan terbenam, ia menjadi perlu untuk mengabaikan koma dalam petikan bahagian. Isu ini timbul apabila menggunakan kaedah string.split(",") lalai dalam Python.
Pertimbangkan rentetan berikut:
"123,test,444,\"don't split, this\",more test,1"
Memisahkan rentetan ini menggunakan kaedah lalai akan menghasilkan yang berikut hasil:
["123", "test", "444", "\"don't split", " this\"", "more test", "1"]
Seperti yang anda lihat, koma di dalam bahagian yang dipetik tidak diabaikan. Untuk menangani perkara ini, ungkapan biasa diperlukan.
str.split(",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)")
Penjelasan Ungkapan Biasa:
Ungkapan biasa ini memastikan bahawa hanya koma di luar bahagian yang dipetik diiktiraf sebagai pemisah.
Sebagai alternatif, menggunakan pengubah suai (?x) dalam Python membolehkan anda memecahkan ungkapan biasa kepada berbilang baris untuk kebolehbacaan yang lebih baik:
str.split("(?x)\n\ , \n\ (?=\n\ (?: \n\ [^\"]* \n\ \" \n\ [^\"]* \n\ \" \n\ )* \n\ [^\"]* \n\ $ \n\ ) \n")
Kod ini secara berkesan memisahkan rentetan input ke dalam senarai di mana setiap elemen mewakili subrentetan yang dipisahkan dengan koma di luar mana-mana petikan bahagian.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Teks Dipisahkan Koma Semasa Mengabaikan Koma Dalam Petikan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!