Hướng dẫn python check if value can be converted to float - python kiểm tra xem giá trị có thể được chuyển đổi thành float

Nếu bạn quan tâm đến hiệu suất (và tôi không đề xuất bạn nên), cách tiếp cận dựa trên thử là người chiến thắng rõ ràng (so với phương pháp dựa trên phân vùng của bạn hoặc phương pháp RegEXP), miễn là bạn không mong đợi nhiều Các chuỗi không hợp lệ, trong trường hợp đó nó có khả năng chậm hơn (có lẽ là do chi phí xử lý ngoại lệ).

Một lần nữa, tôi không đề nghị bạn quan tâm đến hiệu suất, chỉ cung cấp cho bạn dữ liệu trong trường hợp bạn đang thực hiện việc này 10 tỷ lần một giây hoặc một cái gì đó. Ngoài ra, mã dựa trên phân vùng không xử lý ít nhất một chuỗi hợp lệ.

$ ./floatstr.py
F..
partition sad: 3.1102449894
partition happy: 2.09208488464
..
re sad: 7.76906108856
re happy: 7.09421992302
..
try sad: 12.1525540352
try happy: 1.44165301323
.
======================================================================
FAIL: test_partition (__main__.ConvertTests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./floatstr.py", line 48, in test_partition
    self.failUnless(is_float_partition("20e2"))
AssertionError

----------------------------------------------------------------------
Ran 8 tests in 33.670s

FAILED (failures=1)

Đây là mã (Python 2.6, RegEXP lấy từ câu trả lời của John Gietzen):

def is_float_try(str):
    try:
        float(str)
        return True
    except ValueError:
        return False

import re
_float_regexp = re.compile(r"^[-+]?(?:\b[0-9]+(?:\.[0-9]*)?|\.[0-9]+\b)(?:[eE][-+]?[0-9]+\b)?$")
def is_float_re(str):
    return re.match(_float_regexp, str)


def is_float_partition(element):
    partition=element.partition('.')
    if (partition[0].isdigit() and partition[1]=='.' and partition[2].isdigit()) or (partition[0]=='' and partition[1]=='.' and pa\
rtition[2].isdigit()) or (partition[0].isdigit() and partition[1]=='.' and partition[2]==''):
        return True

if __name__ == '__main__':
    import unittest
    import timeit

    class ConvertTests(unittest.TestCase):
        def test_re(self):
            self.failUnless(is_float_re("20e2"))

        def test_try(self):
            self.failUnless(is_float_try("20e2"))

        def test_re_perf(self):
            print
            print 're sad:', timeit.Timer('floatstr.is_float_re("12.2x")', "import floatstr").timeit()
            print 're happy:', timeit.Timer('floatstr.is_float_re("12.2")', "import floatstr").timeit()

        def test_try_perf(self):
            print
            print 'try sad:', timeit.Timer('floatstr.is_float_try("12.2x")', "import floatstr").timeit()
            print 'try happy:', timeit.Timer('floatstr.is_float_try("12.2")', "import floatstr").timeit()

        def test_partition_perf(self):
            print
            print 'partition sad:', timeit.Timer('floatstr.is_float_partition("12.2x")', "import floatstr").timeit()
            print 'partition happy:', timeit.Timer('floatstr.is_float_partition("12.2")', "import floatstr").timeit()

        def test_partition(self):
            self.failUnless(is_float_partition("20e2"))

        def test_partition2(self):
            self.failUnless(is_float_partition(".2"))

        def test_partition3(self):
            self.failIf(is_float_partition("1234x.2"))

    unittest.main()

Sử dụng float ()

def isfloat(num):
    try:
        float(num)
        return True
    except ValueError:
        return False

print(isfloat('s12'))
print(isfloat('1.123'))

Đầu ra

False
True

Ở đây, chúng tôi đã sử dụng thử ngoại trừ để xử lý ValueError nếu chuỗi không phải là một chiếc phao.

  • Trong hàm isfloat(), float() cố gắng chuyển đổi num thành float. Nếu nó thành công, thì hàm trả về True.
  • Khác, ValueError được nâng lên và trả lại False.

Ví dụ,

def is_float_try(str):
    try:
        float(str)
        return True
    except ValueError:
        return False

import re
_float_regexp = re.compile(r"^[-+]?(?:\b[0-9]+(?:\.[0-9]*)?|\.[0-9]+\b)(?:[eE][-+]?[0-9]+\b)?$")
def is_float_re(str):
    return re.match(_float_regexp, str)


def is_float_partition(element):
    partition=element.partition('.')
    if (partition[0].isdigit() and partition[1]=='.' and partition[2].isdigit()) or (partition[0]=='' and partition[1]=='.' and pa\
rtition[2].isdigit()) or (partition[0].isdigit() and partition[1]=='.' and partition[2]==''):
        return True

if __name__ == '__main__':
    import unittest
    import timeit

    class ConvertTests(unittest.TestCase):
        def test_re(self):
            self.failUnless(is_float_re("20e2"))

        def test_try(self):
            self.failUnless(is_float_try("20e2"))

        def test_re_perf(self):
            print
            print 're sad:', timeit.Timer('floatstr.is_float_re("12.2x")', "import floatstr").timeit()
            print 're happy:', timeit.Timer('floatstr.is_float_re("12.2")', "import floatstr").timeit()

        def test_try_perf(self):
            print
            print 'try sad:', timeit.Timer('floatstr.is_float_try("12.2x")', "import floatstr").timeit()
            print 'try happy:', timeit.Timer('floatstr.is_float_try("12.2")', "import floatstr").timeit()

        def test_partition_perf(self):
            print
            print 'partition sad:', timeit.Timer('floatstr.is_float_partition("12.2x")', "import floatstr").timeit()
            print 'partition happy:', timeit.Timer('floatstr.is_float_partition("12.2")', "import floatstr").timeit()

        def test_partition(self):
            self.failUnless(is_float_partition("20e2"))

        def test_partition2(self):
            self.failUnless(is_float_partition(".2"))

        def test_partition3(self):
            self.failIf(is_float_partition("1234x.2"))

    unittest.main()
0 là chữ và số, do đó nó không thể được chuyển đổi thành float và False được trả về; trong khi đó,
def is_float_try(str):
    try:
        float(str)
        return True
    except ValueError:
        return False

import re
_float_regexp = re.compile(r"^[-+]?(?:\b[0-9]+(?:\.[0-9]*)?|\.[0-9]+\b)(?:[eE][-+]?[0-9]+\b)?$")
def is_float_re(str):
    return re.match(_float_regexp, str)


def is_float_partition(element):
    partition=element.partition('.')
    if (partition[0].isdigit() and partition[1]=='.' and partition[2].isdigit()) or (partition[0]=='' and partition[1]=='.' and pa\
rtition[2].isdigit()) or (partition[0].isdigit() and partition[1]=='.' and partition[2]==''):
        return True

if __name__ == '__main__':
    import unittest
    import timeit

    class ConvertTests(unittest.TestCase):
        def test_re(self):
            self.failUnless(is_float_re("20e2"))

        def test_try(self):
            self.failUnless(is_float_try("20e2"))

        def test_re_perf(self):
            print
            print 're sad:', timeit.Timer('floatstr.is_float_re("12.2x")', "import floatstr").timeit()
            print 're happy:', timeit.Timer('floatstr.is_float_re("12.2")', "import floatstr").timeit()

        def test_try_perf(self):
            print
            print 'try sad:', timeit.Timer('floatstr.is_float_try("12.2x")', "import floatstr").timeit()
            print 'try happy:', timeit.Timer('floatstr.is_float_try("12.2")', "import floatstr").timeit()

        def test_partition_perf(self):
            print
            print 'partition sad:', timeit.Timer('floatstr.is_float_partition("12.2x")', "import floatstr").timeit()
            print 'partition happy:', timeit.Timer('floatstr.is_float_partition("12.2")', "import floatstr").timeit()

        def test_partition(self):
            self.failUnless(is_float_partition("20e2"))

        def test_partition2(self):
            self.failUnless(is_float_partition(".2"))

        def test_partition3(self):
            self.failIf(is_float_partition("1234x.2"))

    unittest.main()
2 là một số, do đó, nó được chuyển đổi thành công thành float.

Các chuỗi đa dòng là các chuỗi liên quan đến một số dòng & nbsp; và được bao quanh bởi các dấu ngoặc kép ba. Giá trị Float là một trong những bộ dữ liệu Inbuilt & NBSP hữu ích nhất của Python. Phao, thường được gọi là giá trị dấu phẩy động, là giá trị & nbsp; có điểm thập phân.

Thay đổi một chuỗi thành một số tích hợp & nbsp; rất đơn giản, nhưng chuyển đổi số điểm nổi & nbsp; is & nbsp; phức tạp. Bài viết này sẽ trải qua một vài phương pháp để xác định xem một chuỗi có phải là một bản nổi hay không và tránh lỗi.

Sử dụng hàm isDigit () và thay thế () hàm

Chúng ta có thể kiểm tra xem chuỗi đã nhập có nổi hay không bằng cách kết hợp các hàm isDigit () và thay thế (). Giá trị số nguyên được loại bỏ trước tiên, sau đó chuỗi được hợp nhất để tạo ra một chữ số và kết quả được đánh giá. Nhược điểm là nó sẽ không kiểm tra các con số theo cấp số nhân cũng có thể được sử dụng để tạo số float.

Nhập matplotlib.pyplotas plt matplotlib.pyplot as plt

string="23.0349" = "23.0349"

print ("chuỗi đã nhập:" + str (chuỗi))("The entered string : " + str(string))

r = String.Replace ('.', '', 1) .isDigit ()= string.replace('.', '', 1).isdigit()

in ("là chuỗi một số float?:" + str (r))("Is string a float number ? : " + str(r))

Hướng dẫn python check if value can be converted to float - python kiểm tra xem giá trị có thể được chuyển đổi thành float

Khi bắt đầu mã, chúng tôi đã nhập thư viện đầu tiên ‘Numpy, là NP. Thư viện này liên quan đến các hàm số khác nhau và thư viện thứ hai ‘matplotlib.pyplot, như PLT. Thư viện này chịu trách nhiệm âm mưu các số liệu khác nhau. Sau đó, chúng tôi đã khởi tạo một biến có tên ‘Chuỗi, nhưng chúng tôi đã cho nó một giá trị có kiểu dữ liệu float. Chúng tôi sẽ sử dụng câu lệnh in () để in giá trị của chuỗi được chỉ định.

Trong bước tiếp theo, chúng tôi muốn kiểm tra xem giá trị này có thuộc loại dữ liệu chuỗi hay bất kỳ loại dữ liệu nào khác không. Với mục đích này, chúng tôi tuyên bố một biến khác được gọi là ‘r, và gán nó một chuỗi chức năng tích hợp.replace (). Hàm này cung cấp một bản sao với tất cả các trường hợp của một chuỗi con được thay thế bởi một chuỗi con khác. Sau đó, chúng tôi gọi hàm isDigit (). Hàm này được sử dụng để xác minh loại dữ liệu của các biến.

Hoàn toàn nội dung sẽ được lưu trữ trong biến ‘r. Cuối cùng, chúng tôi sử dụng câu lệnh in () để kiểm tra xem chuỗi xác định có nổi hay không. Giá trị của biến ‘R, được truyền dưới dạng tham số của hàm str ().

Hướng dẫn python check if value can be converted to float - python kiểm tra xem giá trị có thể được chuyển đổi thành float

Sử dụng chức năng & nbsp; float () và xử lý ngoại lệ

Để kiểm tra xem chuỗi đã nhập có nổi hay không cũng có thể được thực hiện bằng phương thức float (), điều này chuyển đổi chuỗi thành số float và không thành công, cho biết nó có thể không phải là số điểm nổi hợp lệ.

nhập khẩu NUMPY dưới dạng NP numpy as np

Nhập matplotlib.pyplotas plt matplotlib.pyplot as plt

string="790.5983" = "790.5983"

print ("chuỗi đã nhập:" + str (chuỗi))("The entered string : " + str(string))

thử : :

float(string)(string)

kết quả = true= True

ngoại trừ : :

in ("không phải là một chiếc phao")("Not a float")

kết quả = sai= False

in ("là chuỗi một số float?:" + str (result))("Is string a float number ? : " + str(result))

Hướng dẫn python check if value can be converted to float - python kiểm tra xem giá trị có thể được chuyển đổi thành float

Trước hết, chúng tôi bao gồm các thư viện ‘Numpy, là NP và‘ matplotlib.pyplot, như PLT. Các tệp tiêu đề này được sử dụng để quản lý một số giá trị số và quản lý đồ thị. Sau đó, chúng tôi sẽ khai báo một chuỗi và gán một biến có tên ‘chuỗi, để lưu giá trị của nó. Chúng tôi đã khởi tạo một giá trị số cho chuỗi này vì chúng tôi muốn kiểm tra loại dữ liệu của biến đó.

Trong dòng tiếp theo, chúng tôi áp dụng câu lệnh print () để chỉ hiển thị dòng ’chuỗi đã nhập với giá trị của nó. Hơn nữa, chúng tôi sẽ sử dụng câu lệnh Try-Except để kiểm tra xem chuỗi yêu cầu có nổi hay không. Vì vậy, chúng tôi đã áp dụng hàm float (). Chúng tôi vượt qua giá trị của biến ‘chuỗi, làm các tham số của phương thức float (). Tạo một biến để lưu trữ kết quả.

Nếu chuỗi được xác định là số float, nó sẽ trả về 'true' và nếu chuỗi xác định không phải là giá trị float, nó sẽ trả về 'false.' Ở đây, chúng tôi đã sử dụng hàm str () và hàm này chứa giá trị của biến 'kết quả' như các đối số của nó.

Hướng dẫn python check if value can be converted to float - python kiểm tra xem giá trị có thể được chuyển đổi thành float

Khi chúng tôi kiểm tra xem giá trị của biến ‘chuỗi có phải là float trong khi chạy mã không, mã sẽ trả về’ đúng trong đầu ra.

Nhập chuỗi không hợp lệ

ValueError xảy ra bất cứ khi nào phương thức float () & nbsp; biến đổi một chuỗi không chính xác, như được hiển thị trong chương trình bên dưới. Bằng cách xác thực rằng chuỗi được xác định & nbsp; được chuyển đổi xuất hiện giống như một float & nbsp; số, giá trịerRor sẽ tránh được. Một số ký hiệu không đặc biệt, chẳng hạn như không gian và & nbsp; dấu phẩy, có thể gây ra giá trị.

Vì vậy, trong khi tương tác với các tệp, nó cần thiết để kiểm tra & nbsp; nội dung chuỗi đó là chính xác và có thể được chuyển đổi thành float & nbsp; số. Nếu số lượng điểm dữ liệu là quá mức, việc xác minh từng điểm là không hiệu quả. Chúng tôi có thể xây dựng một hàm xác định xem chuỗi được xác định & nbsp; là một phao thích hợp có thể được chuyển đổi thành giá trị điểm nổi. Thay vì trả về một lỗi, mã sẽ ném một ngoại lệ vì chuỗi không hợp lệ.

nhập khẩu NUMPY dưới dạng NP numpy as np

Nhập matplotlib.pyplotas plt matplotlib.pyplot as plt

print ("chuỗi đã nhập:" + str (chuỗi))= "turkey"

thử := float(city)

print(result)(result)

Hướng dẫn python check if value can be converted to float - python kiểm tra xem giá trị có thể được chuyển đổi thành float

kết quả = true

Hướng dẫn python check if value can be converted to float - python kiểm tra xem giá trị có thể được chuyển đổi thành float

ngoại trừ :

in ("không phải là một chiếc phao")

kết quả = sai

Thông tin về các Tác giả

Xin chào, tôi là một nhà văn tự do và thường viết cho Linux và các nội dung liên quan đến công nghệ khác

Làm thế nào để bạn kiểm tra xem một giá trị có thể được chuyển đổi thành float trong Python?

Chương trình Python để kiểm tra xem một chuỗi là số (float)..
Trong hàm isFloat (), float () cố gắng chuyển đổi num thành float. Nếu nó thành công, thì hàm trở lại đúng ..
Khác, valueError được nâng lên và trả về sai ..

Python có tự động chuyển đổi thành float không?

Số nguyên và số điểm nổi có thể được trộn trong số học.Python 3 tự động chuyển đổi số nguyên thành phao khi cần thiết.Python 3 automatically converts integers to floats as needed.

Làm thế nào để bạn kiểm tra xem một chuỗi có thể được chuyển đổi thành số python?

Phương thức isDigit () để kiểm tra xem một chuỗi có thể được chuyển đổi thành một số nguyên một cách an toàn.STR.Phương thức ISDigit trả về true nếu tất cả các ký tự trong chuỗi là các chữ số và có ít nhất 1 ký tự, nếu không sẽ được trả về. to check if a string can safely be converted to an integer. The str. isdigit method returns True if all characters in the string are digits and there is at least 1 character, otherwise False is returned.

Tại sao tôi không thể chuyển đổi một chuỗi thành một chiếc phao?

Python "valueError: Không thể chuyển đổi chuỗi thành float" xảy ra khi chúng ta chuyển một chuỗi không thể chuyển đổi thành một float (ví dụ: một chuỗi trống hoặc một chuỗi chứa các ký tự) sang lớp float ().Để giải quyết lỗi, xóa tất cả các ký tự không cần thiết khỏi chuỗi.remove all unnecessary characters from the string.