Mengisih Rentetan dengan Nombor Terbenam
Mengisih senarai rentetan yang mengandungi nombor boleh menimbulkan cabaran kerana jenis data yang berbeza-beza. Pendekatan berikut menyediakan penyelesaian untuk mengisih rentetan ini dengan betul.
Untuk mempraproses rentetan, kami mentakrifkan fungsi pembantu, atoi(), yang menukar rentetan kepada integer jika ia mewakili nombor; jika tidak, ia mengembalikan rentetan asal. Ini membantu dalam mengekstrak komponen berangka daripada rentetan.
Seterusnya, kami memperkenalkan fungsi natural_keys(), yang memisahkan rentetan menggunakan ungkapan biasa dan menggunakan fungsi atoi() pada setiap komponen. Ini mengubah senarai menjadi bentuk boleh diisih.
Menggunakan kaedah sort(), kami menggunakan fungsi natural_keys() sebagai hujah utama. Ini menyusun senarai dalam susunan manusia, mengambil kira komponen abjad dan berangka.
Contoh:
Pertimbangkan senarai rentetan berikut:
["something1", "something12", "something17", "something2", "something25", "something29"]
Isih senarai ini dengan fungsi natural_keys(). menghasilkan:
['something1', 'something2', 'something12', 'something17', 'something25', 'something29']
Isih Teks dengan Terapung:
Untuk melanjutkan fungsi untuk memasukkan terapung, corak ungkapan biasa dalam natural_keys() boleh diubah suai untuk memadankan terapung -nombor titik.
return [ atof(c) for c in re.split(r'[+-]?([0-9]+(?:[.][0-9]*)?|[.][0-9]+)', text) ]
di mana atof() ialah fungsi pembantu yang cuba menukar rentetan kepada terapung.
Ini membolehkan pengisihan rentetan yang mengandungi komponen abjad dan titik terapung.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Isih Rentetan yang Mengandungi Nombor Terbenam dan Terapung Secara Semulajadi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!