Apabila berurusan dengan data teks yang mengandungi kedua-dua teks dan nombor, ia boleh diperlukan untuk mengekstrak nilai berangka daripada rentetan. Dua kaedah biasa untuk melaksanakan tugas ini dalam Python ialah ungkapan biasa dan kaedah isdigit().
Ekspresi biasa (regex) menawarkan cara yang berkuasa untuk memadankan corak dalam rentetan. Untuk mengekstrak nombor, anda boleh menggunakan corak d, yang sepadan dengan satu atau lebih digit. Pertimbangkan contoh:
import re line = "hello 12 hi 89" numbers = re.findall(r'\d+', line) print(numbers) # Output: [12, 89]
regeks ini sepadan dengan jujukan digit "12" dan "89" dan mengembalikannya sebagai senarai. Untuk memadankan hanya nombor yang dihadkan oleh sempadan perkataan (seperti ruang, noktah atau koma), anda boleh menggunakan corak b:
numbers = re.findall(r'\b\d+\b', line) print(numbers) # Output: [12, 89]
The isdigit () kaedah menyediakan cara alternatif untuk mengekstrak nombor daripada rentetan. Kaedah ini mengembalikan Benar untuk aksara yang merupakan digit dan Palsu sebaliknya. Untuk menggunakannya, anda boleh lelaran melalui rentetan dan semak setiap aksara:
line = "hello 12 hi 89" numbers = [] for char in line: if char.isdigit(): numbers.append(int(char)) print(numbers) # Output: [12, 89]
Dalam contoh ini, kaedah melelaran melalui setiap aksara dalam rentetan, menyemak sama ada ia adalah digit menggunakan isdigit(), dan tambahkannya pada senarai nombor jika ada.
Secara amnya, menggunakan ungkapan biasa adalah lebih cekap untuk mengekstrak nombor daripada rentetan daripada menggunakan kaedah isdigit(). Ungkapan biasa boleh memadankan corak kompleks dengan cepat, manakala isdigit() memerlukan lelaran melalui keseluruhan rentetan.
Jika anda perlu mengekstrak integer negatif juga, pendekatan regex menyediakan penyelesaian yang lebih mudah. Hanya gunakan r'-d ' untuk memadankan digit negatif. Walau bagaimanapun, menggunakan isdigit() memerlukan logik yang lebih kompleks untuk mengendalikan tanda negatif.
Atas ialah kandungan terperinci Pengekstrakan Nombor Rentetan Python: Regex vs. isdigit() - Kaedah Mana Yang Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!