Hướng dẫn keep only numbers in string python - chỉ giữ số trong chuỗi python

Cách tiếp cận nhanh nhất, nếu bạn cần thực hiện nhiều hơn chỉ một hoặc hai hoạt động loại bỏ như vậy (hoặc thậm chí chỉ một, nhưng trên một chuỗi rất dài!-), là dựa vào phương pháp

>>> unondig = dict.fromkeys(xrange(65536))
>>> for x in string.digits: del unondig[ord(x)]
... 
>>> s = u'abc123def456'
>>> s.translate(unondig)
u'123456'
1 của chuỗi, mặc dù nó cần một số chuẩn bị :

>>> import string
>>> allchars = ''.join(chr(i) for i in xrange(256))
>>> identity = string.maketrans('', '')
>>> nondigits = allchars.translate(identity, string.digits)
>>> s = 'abc123def456'
>>> s.translate(identity, nondigits)
'123456'

Phương pháp

>>> unondig = dict.fromkeys(xrange(65536))
>>> for x in string.digits: del unondig[ord(x)]
... 
>>> s = u'abc123def456'
>>> s.translate(unondig)
u'123456'
1 là khác nhau và có thể sử dụng đơn giản hơn một cách đơn giản hơn, trên các chuỗi Unicode so với các chuỗi byte, btw:

>>> unondig = dict.fromkeys(xrange(65536))
>>> for x in string.digits: del unondig[ord(x)]
... 
>>> s = u'abc123def456'
>>> s.translate(unondig)
u'123456'

Bạn có thể muốn sử dụng một lớp ánh xạ thay vì chỉ đạo thực tế, đặc biệt nếu chuỗi unicode của bạn có khả năng chứa các ký tự có giá trị ord rất cao (điều đó sẽ làm cho dict quá lớn ;-). Ví dụ:

>>> class keeponly(object):
...   def __init__(self, keep): 
...     self.keep = set(ord(c) for c in keep)
...   def __getitem__(self, key):
...     if key in self.keep:
...       return key
...     return None
... 
>>> s.translate(keeponly(string.digits))
u'123456'
>>> 

Xin chào, Độc giả! Trong bài viết này, chúng tôi sẽ tập trung vào các cách để trích xuất các chữ số từ chuỗi Python. Vì vậy, hãy để chúng tôi bắt đầu.ways to extract digits from a Python String. So, let us get started.


1. Sử dụng hàm isDigit () để trích xuất các chữ số từ chuỗi python

Python cung cấp cho chúng tôi

>>> unondig = dict.fromkeys(xrange(65536))
>>> for x in string.digits: del unondig[ord(x)]
... 
>>> s = u'abc123def456'
>>> s.translate(unondig)
u'123456'
3 để kiểm tra sự hiện diện của các chữ số trong một chuỗi.

Hàm python isDigit () trả về true nếu chuỗi đầu vào chứa các ký tự chữ số trong đó.True if the input string contains digit characters in it.

Syntax::

Chúng tôi không cần chuyển bất kỳ tham số nào cho nó. Là một đầu ra, nó trả về đúng hoặc sai tùy thuộc vào sự hiện diện của các ký tự chữ số trong một chuỗi.

Ví dụ 1:

inp_str = "Python4Journaldev"

print("Original String : " + inp_str) 
num = ""
for c in inp_str:
    if c.isdigit():
        num = num + c
print("Extracted numbers from the list : " + num) 

Trong ví dụ này, chúng tôi đã lặp lại ký tự chuỗi đầu vào bằng ký tự bằng cách sử dụng một vòng lặp. Ngay khi hàm isDigit () gặp phải một chữ số, nó sẽ lưu trữ nó thành một biến chuỗi có tên ‘num.

Do đó, chúng ta thấy đầu ra như được hiển thị bên dưới

Output:

Original String : Python4Journaldev
Extracted numbers from the list : 4

Bây giờ, chúng ta thậm chí có thể sử dụng khả năng hiểu danh sách Python để câu lạc bộ chức năng lặp và idigit () thành một dòng.

Bằng cách này, các ký tự chữ số được lưu trữ vào danh sách ‘Num, như được hiển thị bên dưới:

Ví dụ 2:

inp_str = "Hey readers, we all are here be 4 the time!"


print("Original string : " + inp_str) 


num = [int(x) for x in inp_str.split() if x.isdigit()] 

 
print("The numbers list is : " + str(num)) 

Output:

Original string : Hey readers, we all are here be 4 the time!
The numbers list is : [4]


2. Sử dụng thư viện regex để trích xuất các chữ số

Thư viện biểu thức chính quy Python có tên ‘Thư viện Regex‘ cho phép chúng tôi phát hiện sự hiện diện của các ký tự cụ thể như chữ số, một số ký tự đặc biệt, v.v. từ một chuỗi.regex library‘ enables us to detect the presence of particular characters such as digits, some special characters, etc. from a string.

Chúng ta cần nhập thư viện Regex vào môi trường Python trước khi thực hiện bất kỳ bước nào nữa.

Hơn nữa, chúng tôi

>>> unondig = dict.fromkeys(xrange(65536))
>>> for x in string.digits: del unondig[ord(x)]
... 
>>> s = u'abc123def456'
>>> s.translate(unondig)
u'123456'
4 để trích xuất các ký tự chữ số từ chuỗi. Phần ‘\ d+, sẽ giúp hàm findall () để phát hiện sự hiện diện của bất kỳ chữ số nào.‘\d+’ would help the findall() function to detect the presence of any digit.

Example:

import re
inp_str = "Hey readers, we all are here be 4 the time 1!"


print("Original string : " + inp_str) 

num = re.findall(r'\d+', inp_str) 

print(num)

Vì vậy, như đã thấy dưới đây, chúng tôi sẽ nhận được một danh sách tất cả các ký tự chữ số từ chuỗi.

Output:

Original string : Hey readers, we all are here be 4 the time 1!
['4', '1']


Sự kết luận

Bằng cách này, chúng tôi đã đi đến cuối chủ đề này. Hãy bình luận bên dưới, trong trường hợp bạn bắt gặp bất kỳ câu hỏi.

Tôi khuyên tất cả các bạn nên thử triển khai các ví dụ trên bằng các cấu trúc dữ liệu như danh sách, dict, v.v.

Để biết thêm các bài viết như vậy liên quan đến Python, hãy theo dõi và cho đến lúc đó, học hỏi hạnh phúc !! 🙂

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 +

    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    5 +
    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    6 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ố.

    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    7
    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    8
    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    9

    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    0
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    1
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    2
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    3
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    4

    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    5
    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    8
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    7
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    8
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    9
    inp_str = "Python4Journaldev"
    
    print("Original String : " + inp_str) 
    num = ""
    for c in inp_str:
        if c.isdigit():
            num = num + c
    print("Extracted numbers from the list : " + num) 
    
    
    0

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

    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    0
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    1
    inp_str = "Python4Journaldev"
    
    print("Original String : " + inp_str) 
    num = ""
    for c in inp_str:
        if c.isdigit():
            num = num + c
    print("Extracted numbers from the list : " + num) 
    
    
    8
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    3
    Original String : Python4Journaldev
    Extracted numbers from the list : 4
    
    0
    Original String : Python4Journaldev
    Extracted numbers from the list : 4
    
    1

    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 +

    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    5 +
    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    6 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ố.

    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    7
    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    8
    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    9

    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    0
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    1
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    2
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    3
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    4

    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    0
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    1
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    2
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    3
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    4

    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    5
    >>> unondig = dict.fromkeys(xrange(65536))
    >>> for x in string.digits: del unondig[ord(x)]
    ... 
    >>> s = u'abc123def456'
    >>> s.translate(unondig)
    u'123456'
    
    8
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    7
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    8
    >>> class keeponly(object):
    ...   def __init__(self, keep): 
    ...     self.keep = set(ord(c) for c in keep)
    ...   def __getitem__(self, key):
    ...     if key in self.keep:
    ...       return key
    ...     return None
    ... 
    >>> s.translate(keeponly(string.digits))
    u'123456'
    >>> 
    
    9
    inp_str = "Python4Journaldev"
    
    print("Original String : " + inp_str) 
    num = ""
    for c in inp_str:
        if c.isdigit():
            num = num + c
    print("Extracted numbers from the list : " + num) 
    
    
    0

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


    Làm thế nào để tôi chỉ nhận được các chữ số của 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.isdigit function helps to get the digit out of a string.

    Làm thế nào để bạn giữ số chỉ trong Python?

    Cấm Python chỉ giữ các số trong chuỗi mã câu trả lời..
    >>> Nhập RE ..
    >>> Re.sub ("[^0-9]", "", "sdkjh987978asd098as0980a98sd").
    '987978098098098'.

    Làm cách nào để in chỉ số trong chuỗi?

    Chỉ in số từ chuỗi Java..
    công khai void void chính (chuỗi [] args) {.
    Chuỗi S = "ADF5HGJYU1FRDSFF6VGYU7BNJH9ASD3" ;.
    char [] sarr = s.tochararray () ;.
    for (int i = 0; i
    if (sarr [i]/1> = 48 && sarr [i]/1
    Hệ thống.ngoài.in (sarr [i]+",") ;.
    }else{.
    //System.out.print(sarr [iTHER+ ",") ;.

    Làm thế nào để tôi bỏ qua không

    Phương thức phụKết quả = Re.sub (r '[^0-9]', '', my_str).Ở đó.Phương thức Sub () sẽ loại bỏ tất cả các ký tự không phải là số từ chuỗi bằng cách thay thế chúng bằng các chuỗi trống., e.g. result = re. sub(r'[^0-9]', '', my_str) . The re. sub() method will remove all non-numeric characters from the string by replacing them with empty strings.