Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Menggunakan Ungkapan Biasa untuk Mengekstrak Nilai Terapung/Double dalam Python?

Bagaimana Menggunakan Ungkapan Biasa untuk Mengekstrak Nilai Terapung/Double dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-10-21 12:05:02906semak imbas

How to Use Regular Expressions to Extract Float/Double Values in Python?

Mengekstrak Nilai Terapung/Berganda dengan Ungkapan Biasa

Dalam Python, anda boleh menggunakan ungkapan biasa untuk mengekstrak nilai titik terapung atau berganda daripada rentetan . Mari kita terokai ungkapan biasa yang berkuasa daripada Perl:

(?x)
^
  [+-]?\ *      # Optional sign followed by optional whitespace
  (             # Match integers or floating-point mantissas
      \d+       # Whole numbers
      (
          \.\d* # Mantissa with decimal point (a.b or a.)
      )?        # Optional decimal point
     |\.\d+     # Mantissa without leading whole number (.b)
  )
  ([eE][+-]?\d+)?  # Optional exponent
$

Sebagai contoh, untuk mengekstrak nilai berganda daripada rentetan:

<code class="python">import re

# Create a regular expression pattern
re_float = re.compile(above_regexp)

# Match the pattern against a string
match = re_float.match("4.5")

# Extract the matched value
double_value = match.group(0)

print(double_value)  # Output: 4.5</code>

Untuk mengekstrak berbilang nilai angka daripada rentetan yang lebih besar, anda boleh menggunakan kaedah findall():

<code class="python">s = """4.5 abc -4.5 abc - 4.5 abc + .1e10 abc . abc 1.01e-2 abc 
       1.01e-.2 abc 123 abc .123"""

numeric_values = re.findall(r"[+-]? *(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?", s)

print(numeric_values)  # Output: ['4.5', '-4.5', '- 4.5', '+ .1e10', ' 1.01e-2', '       1.01', '-.2', ' 123', ' .123']</code>

Atas ialah kandungan terperinci Bagaimana Menggunakan Ungkapan Biasa untuk Mengekstrak Nilai Terapung/Double dalam Python?. 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