Rumah >Java >javaTutorial >Bagaimana untuk Memisahkan Teks Dipisahkan Koma Semasa Mengabaikan Koma Dalam Petikan?

Bagaimana untuk Memisahkan Teks Dipisahkan Koma Semasa Mengabaikan Koma Dalam Petikan?

Barbara Streisand
Barbara Streisandasal
2024-12-02 08:16:10855semak imbas

How to Split Comma-Separated Text While Ignoring Commas Within Quotes?

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:

  • **,: Pisahkan rentetan pada koma.
  • **(?=(d $)): Penegasan pandangan hadapan yang memastikan bahawa perpecahan berlaku hanya jika ia diikuti oleh genap bilangan petikan berganda.
  • *(?:w"w"): Menangkap berbilang rentetan petikan.
  • *.$: Menangkap baki teks yang tidak dipetik.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn