Hướng dẫn identify number in string python - xác định số trong chuỗi python

Điều này còn hơn một chút, nhưng bạn có thể mở rộng biểu thức regex để tính toán ký hiệu khoa học quá.

import re

# Format is [(, ), ...]
ss = [("apple-12.34 ba33na fanc-14.23e-2yapple+45e5+67.56E+3",
       ['-12.34', '33', '-14.23e-2', '+45e5', '+67.56E+3']),
      ('hello X42 I\'m a Y-32.35 string Z30',
       ['42', '-32.35', '30']),
      ('he33llo 42 I\'m a 32 string -30', 
       ['33', '42', '32', '-30']),
      ('h3110 23 cat 444.4 rabbit 11 2 dog', 
       ['3110', '23', '444.4', '11', '2']),
      ('hello 12 hi 89', 
       ['12', '89']),
      ('4', 
       ['4']),
      ('I like 74,600 commas not,500', 
       ['74,600', '500']),
      ('I like bad math 1+2=.001', 
       ['1', '+2', '.001'])]

for s, r in ss:
    rr = re.findall("[-+]?[.]?[\d]+(?:,\d\d\d)*[\.]?\d*(?:[eE][-+]?\d+)?", s)
    if rr == r:
        print('GOOD')
    else:
        print('WRONG', rr, 'should be', r)

Cho tất cả tốt!

Ngoài ra, bạn có thể nhìn vào Regex tích hợp keo AWS

Xem thảo luận

Cải thiện bài viết

Lưu bài viết

  • Đọc
  • Bàn luận
  • Xem thảo luận

    Cải thiện bài viết

    Lưu bài viết

    Đọc

    Bàn luận
    This problem can be solved by using split function to convert string to list and then the list comprehension which can help us iterating through the list and isdigit function helps to get the digit out of a string.

    Nhiều lần, trong khi làm việc với các chuỗi, chúng tôi bắt gặp vấn đề này, trong đó chúng tôi cần phải có tất cả các lần xuất hiện bằng số. Loại vấn đề này thường xảy ra trong lập trình cạnh tranh và cũng trong phát triển web. Hãy để thảo luận về những cách nhất định trong đó vấn đề này có thể được giải quyết.

    Phương pháp số 1: Sử dụng danh sách hiểu +

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    1 +
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    2 Vấn đề này có thể được giải quyết bằng cách sử dụng chức năng phân chia để chuyển đổi chuỗi thành danh sách và sau đó danh sách hiểu có thể giúp chúng tôi lặp qua chức năng danh sách và isDigit giúp loại bỏ chữ số.

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    3
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    4
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    5

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    6
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    7
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    8
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    9
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    0

    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    1
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    4
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    3
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    4
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    5
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    6
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    7
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    8

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    6
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    7
    >>> print(containsNumber('1s4f6h'))
    True
    >>> print(containsNumber('python'))
    False
    >>> print(containsNumber('python3'))
    True
    4
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    9
    >>> print(containsNumber('1s4f6h'))
    True
    >>> print(containsNumber('python'))
    False
    >>> print(containsNumber('python3'))
    True
    6
    >>> print(containsNumber('1s4f6h'))
    True
    >>> print(containsNumber('python'))
    False
    >>> print(containsNumber('python3'))
    True
    7

    This particular problem can also be solved using python regex, we can use the findall function to check for the numeric occurrences using matching regex string.

    Đầu ra:

    Nhiều lần, trong khi làm việc với các chuỗi, chúng tôi bắt gặp vấn đề này, trong đó chúng tôi cần phải có tất cả các lần xuất hiện bằng số. Loại vấn đề này thường xảy ra trong lập trình cạnh tranh và cũng trong phát triển web. Hãy để thảo luận về những cách nhất định trong đó vấn đề này có thể được giải quyết.

    Phương pháp số 1: Sử dụng danh sách hiểu +

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    1 +
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    2 Vấn đề này có thể được giải quyết bằng cách sử dụng chức năng phân chia để chuyển đổi chuỗi thành danh sách và sau đó danh sách hiểu có thể giúp chúng tôi lặp qua chức năng danh sách và isDigit giúp loại bỏ chữ số.

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    3
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    4
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    5

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    6
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    7
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    8
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    9
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    0

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    6
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    7
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    8
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    9
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    0

    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    1
    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    4
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    3
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    4
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    5
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    6
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    7
    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False
    8

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    


    Biết cách kiểm tra xem chuỗi Python có chứa một số có thể là thứ bạn sẽ phải làm tại một số điểm trong ứng dụng của bạn không.

    Một cách tiếp cận đơn giản để kiểm tra xem chuỗi python có chứa một số là để xác minh mọi ký tự trong chuỗi bằng phương thức chuỗi isDigit () không. Khi đã hoàn thành, chúng tôi sẽ nhận được một danh sách các booleans và nếu bất kỳ yếu tố nào của nó là đúng, điều đó có nghĩa là chuỗi chứa ít nhất một số.

    Có nhiều cách để giải quyết vấn đề này và hướng dẫn này trải qua một vài trong số chúng.

    Bắt đầu nào!

    • Sử dụng một vòng lặp và isDigit () để tìm hiểu xem một chuỗi có chứa các số không
    • Một cách khác để sử dụng isDigit () để kiểm tra xem một chuỗi có chứa số không
    • Sử dụng hàm bất kỳ () để kiểm tra xem chuỗi có chứa số không
    • Kiểm tra xem chuỗi Python có chứa các số bằng cách sử dụng biểu thức thông thường không
    • Làm thế nào để bạn kiểm tra xem chuỗi có chứa số bằng hàm bản đồ không?
    • Sự kết luận

    Sử dụng một vòng lặp và isDigit () để tìm hiểu xem một chuỗi có chứa các số không

    Một cách khác để sử dụng isDigit () để kiểm tra xem một chuỗi có chứa số không

    Sử dụng hàm bất kỳ () để kiểm tra xem chuỗi có chứa số không

    Kiểm tra xem chuỗi Python có chứa các số bằng cách sử dụng biểu thức thông thường không

    def containsNumber(value):
        for character in value:
            if character.isdigit():
                return True
        return False

    Làm thế nào để bạn kiểm tra xem chuỗi có chứa số bằng hàm bản đồ không?

    Sự kết luận

    >>> print(containsNumber('1s4f6h'))
    True
    >>> print(containsNumber('python'))
    False
    >>> print(containsNumber('python3'))
    True

    Một cách tiếp cận cơ bản để thực hiện kiểm tra này là sử dụng vòng lặp cho mọi ký tự của chuỗi và kiểm tra xem ký tự đó có phải là số bằng cách sử dụng phương thức chuỗi isDigit () không.

    Một cách khác để sử dụng isDigit () để kiểm tra xem một chuỗi có chứa số không

    Sử dụng hàm bất kỳ () để kiểm tra xem chuỗi có chứa số không

    Kiểm tra xem chuỗi Python có chứa các số bằng cách sử dụng biểu thức thông thường không

    >>> '123'.isdigit()
    True
    >>> '1'.isdigit()
    True
    >>> 'a'.isdigit()
    False
    >>> 'a1'.isdigit()
    False
    >>> ''.isdigit()
    False         

    Làm thế nào để bạn kiểm tra xem chuỗi có chứa số bằng hàm bản đồ không?

    >>> value = 'adf2'
    >>> [char.isdigit() for char in value]
    [False, False, False, True]         

    Sự kết luậnlist comprehension that generates a list of booleans in which every element is the value returned by isdigit() for each character in the string.

    Một cách tiếp cận cơ bản để thực hiện kiểm tra này là sử dụng vòng lặp cho mọi ký tự của chuỗi và kiểm tra xem ký tự đó có phải là số bằng cách sử dụng phương thức chuỗi isDigit () không.

    Nếu ít nhất một ký tự là một chữ số thì hãy trả về đúng nếu không sai.

    Chúng tôi sẽ viết một chức năng để thực hiện logic này:

    >>> if True in [char.isdigit() for char in value]:
    …     print("The string contains a number")
    … else:
    …     print("The string doesn't contain a number")
    … 
    The string contains a number         

    Việc thực hiện hàm dừng ngay khi số đầu tiên được tìm thấy trong chuỗi hoặc sau khi thực hiện vòng lặp nếu không tìm thấy số nào.

    Hãy để áp dụng chức năng này cho một số chuỗi để xem nó có hoạt động tốt không:

    def containsNumber(value):
        if True in [char.isdigit() for char in value]:
            return True
        return False

    Nó làm công việc của mình!

    >>> print(containsNumber(''))
    False
    >>> print(containsNumber('awirfd'))
    False
    >>> print(containsNumber('dfgh3'))
    True
    >>> print(containsNumber('12345'))
    True

    Một cách khác để kiểm tra xem chuỗi python có chứa một số là bằng cách sử dụng phương thức chuỗi isDigit () cùng với khả năng hiểu danh sách.

    Sử dụng hàm bất kỳ () để kiểm tra xem chuỗi có chứa số không

    Kiểm tra xem chuỗi Python có chứa các số bằng cách sử dụng biểu thức thông thường không

    Làm thế nào để bạn kiểm tra xem chuỗi có chứa số bằng hàm bản đồ không?

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    0

    Sự kết luận

    Một cách tiếp cận cơ bản để thực hiện kiểm tra này là sử dụng vòng lặp cho mọi ký tự của chuỗi và kiểm tra xem ký tự đó có phải là số bằng cách sử dụng phương thức chuỗi isDigit () không.

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    1

    Nếu ít nhất một ký tự là một chữ số thì hãy trả về đúng nếu không sai.

    Chúng tôi sẽ viết một chức năng để thực hiện logic này:

    >>> print(containsNumber(''))
    False
    >>> print(containsNumber('awirfd'))
    False
    >>> print(containsNumber('dfgh3'))
    True
    >>> print(containsNumber('12345'))
    True

    Kiểm tra xem chuỗi Python có chứa các số bằng cách sử dụng biểu thức thông thường không

    Làm thế nào để bạn kiểm tra xem chuỗi có chứa số bằng hàm bản đồ không?

    Sự kết luận

    Một cách tiếp cận cơ bản để thực hiện kiểm tra này là sử dụng vòng lặp cho mọi ký tự của chuỗi và kiểm tra xem ký tự đó có phải là số bằng cách sử dụng phương thức chuỗi isDigit () không.

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    3

    Nếu ít nhất một ký tự là một chữ số thì hãy trả về đúng nếu không sai.

    Chúng tôi sẽ viết một chức năng để thực hiện logic này:‘[0-9]+’.

    Việc thực hiện hàm dừng ngay khi số đầu tiên được tìm thấy trong chuỗi hoặc sau khi thực hiện vòng lặp nếu không tìm thấy số nào.

    Hãy để áp dụng chức năng này cho một số chuỗi để xem nó có hoạt động tốt không:

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    4

    Nó làm công việc của mình!

    Một cách khác để kiểm tra xem chuỗi python có chứa một số là bằng cách sử dụng phương thức chuỗi isDigit () cùng với khả năng hiểu danh sách.

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    5

    Trước tiên, hãy tóm tắt lại cách phương thức ISDigit hoạt động:ternary operator to return True or False depending on the fact that the numbers list is empty or not.

    Hãy để một chuỗi và áp dụng isDigit () cho mọi ký tự của chuỗi:

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    6

    Chúng tôi đã sử dụng một danh sách hiểu biết tạo ra một danh sách các booleans trong đó mọi phần tử là giá trị được trả về bởi isDigit () cho mỗi ký tự trong chuỗi.

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    7

    Làm thế nào để bạn kiểm tra xem chuỗi có chứa số bằng hàm bản đồ không?

    Sự kết luận

    Một cách tiếp cận cơ bản để thực hiện kiểm tra này là sử dụng vòng lặp cho mọi ký tự của chuỗi và kiểm tra xem ký tự đó có phải là số bằng cách sử dụng phương thức chuỗi isDigit () không.map() function that applies a specific function to the elements of an iterable (a string is an iterable because you can see it as a sequence of characters).

    Nếu ít nhất một ký tự là một chữ số thì hãy trả về đúng nếu không sai.

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    8

    Chúng ta có thể làm gì với nó?

    Chúng ta có thể sử dụng hàm danh sách () để chuyển đổi nó thành danh sách Python:

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    9

    Như bạn có thể thấy từ đầu ra ở trên, chúng tôi lấy lại một danh sách các booleans nơi mọi boolean có liên quan đến một ký tự trong chuỗi. Boolean là đúng nếu nhân vật là một số và nó sai khác.

    Sau đó, chúng ta có thể sử dụng hàm bất kỳ () nào, đã được sử dụng trong một trong các phần trước, để biết danh sách có chứa ít nhất một yếu tố thực.

    The original string : There are 2 apples for 4 persons
    The numbers list is : [2, 4]
    
    0

    Có ý nghĩa?

    Sự kết luận

    Chúng tôi đã trải qua nhiều cách để tìm hiểu xem một chuỗi Python có chứa một số không.

    Bạn đã học được cách sử dụng phương thức chuỗi isDigit (), hàm bất kỳ (), biểu thức chính quy và hàm bản đồ.

    Cách yêu thích của bạn là gì? Bạn có đề xuất bất kỳ cách tiếp cận nào khác không?

    Hãy cho tôi biết trong các ý kiến ​​dưới đây 🙂

    Bài viết liên quan:

    Hướng dẫn identify number in string python - xác định số trong chuỗi python

    Tôi là một nhà lãnh đạo công nghệ, kỹ sư phần mềm và huấn luyện viên lập trình. Tôi muốn giúp bạn trong hành trình trở thành một nhà phát triển siêu!

    Làm thế nào để bạn tìm thấy một số trong một chuỗi trong Python?

    Vấn đề này có thể được giải quyết bằng cách sử dụng chức năng phân chia để chuyển đổi chuỗi thành danh sách và sau đó danh sách hiểu có thể giúp chúng tôi lặp qua chức năng danh sách và isDigit giúp loại bỏ chữ số ra khỏi chuỗi.using split function to convert string to list and then the list comprehension which can help us iterating through the list and isdigit function helps to get the digit out of a string.

    Làm thế nào để bạn kiểm tra xem một chuỗi có chứa một số?

    Để tìm một chuỗi đã cho có chứa một số, hãy chuyển đổi nó thành một mảng ký tự và tìm xem mỗi ký tự trong mảng có phải là một chữ số bằng phương thức isDigit () của lớp ký tự hay không.convert it to a character array and find whether each character in the array is a digit using the isDigit() method of the Character class.

    Làm thế nào để bạn kiểm tra xem một chuỗi là một chữ số trong Python?

    Python chuỗi isDigit () 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ố.Nếu không, nó trả về sai.isdigit() The isdigit() method returns True if all characters in a string are digits. If not, it returns False .