Python kiểm tra xem chuỗi có chứa chữ cái và số không

Cho dù bạn đang tạo tập lệnh xác minh cho đầu vào của người dùng, biểu mẫu đăng nhập yêu cầu người dùng đưa ký tự vào mật khẩu - kiểm tra xem chuỗi có chứa ký tự không phải là thao tác không phổ biến

Trong hướng dẫn này - chúng ta sẽ xem xét nhiều cách để bạn có thể kiểm tra xem một chuỗi có chứa chữ số/số trong Python hay không, bao gồm điểm chuẩn cho phương pháp hiệu quả nhất cuối cùng

Kiểm tra xem chuỗi có chứa số trong Python không

Có nhiều cách để kiểm tra xem một ký tự có phải là một số hay không (

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
2,
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
3,
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
4), mà bạn có thể kết hợp với vòng lặp for, để kiểm tra ít nhất một lần truy cập tích cực. Ngoài ra, bạn có thể sử dụng Biểu thức chính quy làm công cụ đối sánh mẫu chung, linh hoạt, mạnh mẽ và được thiết kế để áp dụng cho khối văn bản lớn. Cuối cùng - bạn luôn có thể
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
5 mỗi ký tự được đưa ra một câu lệnh có điều kiện và trả về
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
6 là
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
7 trong số đó dẫn đến
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
6

Việc lựa chọn giữa những điều này nên xem xét hiệu quả của các phương pháp, mức độ chi tiết và kiểu mã hóa, cũng như các tác vụ ngược dòng hoặc xuôi dòng liên quan đến hoạt động

Kiểm tra xem chuỗi có chứa số với ord()

Hàm

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
2 nhận một ký tự và trả về giá trị ASCII của nó

Giá trị ASCII của

String is whole numeric? True 
String is whole numeric? False
0 là 48 và giá trị ASCII của
String is whole numeric? True 
String is whole numeric? False
1 là 57. Bất kỳ số nào trong số này, theo phần mở rộng, sẽ có giá trị ASCII trong khoảng từ 48 đến 57. Bây giờ để kiểm tra xem chuỗi có bất kỳ số nào không, chúng tôi sẽ duyệt qua toàn bộ chuỗi đầu vào và kiểm tra giá trị ASCII của từng ký tự, nếu giá trị ASCII lớn hơn 47 và nhỏ hơn 58, có nghĩa đó là một số và chúng tôi sẽ trả về
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
6

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
1

Kết quả này trong

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
2

Kiểm tra xem chuỗi có chứa số với innumeric() không

Hàm

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
3 trả về
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
6 nếu chuỗi đầu vào chỉ chứa số, ngược lại, nó trả về
String is whole numeric? True 
String is whole numeric? False
5

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())

Kết quả này trong

________số 8

Python kiểm tra xem chuỗi có chứa chữ cái và số không

Ghi chú. Hàm

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
3 sẽ không hoạt động như bạn mong đợi đối với số âm hoặc số thực. Nếu chúng ta chuyển một chuỗi chỉ có số âm hoặc số thực, nó sẽ trả về
String is whole numeric? True 
String is whole numeric? False
5, bởi vì các ký tự
String is whole numeric? True 
String is whole numeric? False
8 và
String is whole numeric? True 
String is whole numeric? False
9 được liên kết với số âm và số thực thực sự là, không phải số

Mặc dù vậy, vì các ký tự chỉ là các chuỗi có độ dài 1 trong Python - bạn có thể lặp qua các ký tự và sử dụng

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
3 để kiểm tra xem chúng có phải là số không

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
3

Kiểm tra xem chuỗi có chứa số với isdigit()

Hàm

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
4 kiểm tra xem tất cả các ký tự trong chuỗi có phải là chữ số không. Nếu có - nó trả về
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
6 và nếu không, nó trả về
String is whole numeric? True 
String is whole numeric? False
5. Một lần nữa, vì các ký tự chỉ là các chuỗi có độ dài 1 trong Python - phương thức này có thể được sử dụng trong một vòng lặp cho mỗi ký tự

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
7

Ghi chú. Phương thức

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
4 chỉ hoạt động theo cách tương tự như
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
3 và nếu bạn chuyển một chuỗi chứa số float hoặc số âm cho nó, thì
String is whole numeric? True 
String is whole numeric? False
5 sẽ được trả về do các ký tự đặc biệt không phải là số. Tuy nhiên, ở cấp độ ký tự, nếu chỉ cần một giá trị
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
6 là đủ để xác định xem chuỗi có chứa số hay không - thì có thể áp dụng

Sự khác biệt giữa isnumeric() và isdigit()?

Vậy, sự khác biệt giữa

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
3 và
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
4 là gì?

  • str1 = "918"
    print("String is whole numeric?", str1.isnumeric())
    str2 = "The meaning of the universe is 42"
    print("String is whole numeric?", str2.isnumeric())
    
    3 kiểm tra xem có bất kỳ ký tự nào là biểu diễn unicode của một giá trị số hay không (bao gồm biểu diễn số La Mã, chỉ số trên, chỉ số dưới và phân số)
  • str1 = "918"
    print("String is whole numeric?", str1.isnumeric())
    str2 = "The meaning of the universe is 42"
    print("String is whole numeric?", str2.isnumeric())
    
    4 kiểm tra xem có bất kỳ ký tự nào là chữ số unicode hay không (không bao gồm biểu diễn số La Mã, nhưng bao gồm siêu/chỉ số dưới và phân số)
  • str1 = "918"
    print("String is whole numeric?", str1.isnumeric())
    str2 = "The meaning of the universe is 42"
    print("String is whole numeric?", str2.isnumeric())
    
    70 kiểm tra xem có bất kỳ ký tự nào là chữ số thập phân hay không (sẽ trả về
    String is whole numeric? True 
    String is whole numeric? False
    
    5 cho bất kỳ ký tự nào không phải là
    str1 = "918"
    print("String is whole numeric?", str1.isnumeric())
    str2 = "The meaning of the universe is 42"
    print("String is whole numeric?", str2.isnumeric())
    
    75 trong cơ số 10)

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
3 là phương pháp rộng nhất, trong khi
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
70 là phương pháp hẹp nhất giữa ba

Kiểm tra xem chuỗi có chứa số với map() và any()

Hàm

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
5 thực thi hàm được cung cấp cho từng thành phần của iterable được truyền trong hàm bản đồ. Mỗi phần tử của một iterable được truyền cho hàm dưới dạng tham số

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
3

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
79 được thực hiện cho mọi mục của
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
30. Điều này cho phép logic rất linh hoạt và mạnh mẽ, chỉ bị giới hạn bởi phạm vi mở rộng của
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
79 mà bạn gọi trên đầu vào. Phương thức này trả về một thể hiện
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
32, có thể dễ dàng biến thành các bộ sưu tập khác như danh sách hoặc tập hợp

Chúng ta có thể viết một hàm trả về một giá trị boolean cho biết một ký tự có phải là một số hay không và lệnh gọi

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
5 do đó sẽ dẫn đến một danh sách các giá trị boolean

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
7 trả về
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
6 nếu bất kỳ phần tử nào của iterable được truyền là
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
6, nếu không, nó trả về
String is whole numeric? True 
String is whole numeric? False
5

Xâu chuỗi hai thứ này lại với nhau - chúng ta có thể tạo một tập lệnh ngắn, cấp cao và trừu tượng hóa vòng lặp for

Kết quả này trong

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
3

Nếu chức năng của bạn là một lớp lót - không cần trích xuất nó dưới dạng một chức năng được đặt tên. Thay vào đó, bạn có thể viết một hàm lambda ẩn danh vì mục đích ngắn gọn

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
4

Điều này cũng dẫn đến

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
5

Kiểm tra xem chuỗi có chứa số trong Python với biểu thức chính quy không

Cụm từ thông dụng là các mẫu tìm kiếm được thiết kế để khớp với văn bản đầu vào. Chúng linh hoạt và có bản chất của chúng - bạn có thể viết một số biểu thức tùy ý cho cùng một mẫu để tìm kiếm, cũng như bao gồm bất kỳ mẫu dễ hiểu nào mà bạn có thể nghĩ ra

Mô-đun

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
38 của Python được sử dụng để viết, biên dịch và khớp văn bản với các biểu thức thông thường. Nó đưa ra nhiều phương thức khác nhau, chẳng hạn như
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
39 khớp với việc một chuỗi có bắt đầu bằng một mẫu hay không,
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
30 tìm lần xuất hiện đầu tiên của nhiều lần khớp trong một chuỗi và
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
31 kiểm tra tất cả các lần xuất hiện

Ghi chú. Cả ba phương thức đều chấp nhận đối số

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
32 và
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
33 và chạy tìm kiếm
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
32 trong chuỗi
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
33

Mẫu xác định một chữ số là

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
36

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
20

Phương thức

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
30 trả về một đối tượng
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
38, chứa kết quả tìm được và chỉ số bắt đầu và kết thúc

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
21

Đối tượng is có thể được đánh giá thành giá trị boolean dựa trên việc đó là đối tượng

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
38 hay
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
40. Kết quả này trong

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
22

Không giống như phương thức

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
30, phương thức
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
31 trả về tất cả các lần xuất hiện của mẫu thay vì chỉ lần đầu tiên

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
23

Kết quả này trong

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
22

điểm chuẩn

Còn hiệu suất thì sao?

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
25

Kết quả này trong

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
26

Nói chung, các cách tiếp cận vòng lặp for chạy trong cùng một khoảng thời gian, với ít chi phí từ các phương thức cụ thể. Lambda với

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
7 thực tế là chậm nhất (rất nhiều thao tác dư thừa, do chuyển đổi danh sách thành danh sách rồi giảm danh sách), trong khi Biểu thức chính quy có thời gian chạy nhanh nhất với phương sai xung quanh nó thấp nhất (chúng luôn nhanh)

Tuy nhiên, trên các văn bản đầu vào dài hơn, độ phức tạp về thời gian của từng cách tiếp cận khác nhau được nhấn mạnh, đặc biệt tùy thuộc vào số lượng chữ số khớp (dù chữ số có phổ biến hay không)

Chuỗi đầu tiên tạo ra một chuỗi ngẫu nhiên có số lượng chữ số và ký tự bằng nhau, trong khi chuỗi sau là chuỗi chỉ có ký tự có một chữ số duy nhất ở cuối (độ phức tạp về thời gian tồi tệ nhất)

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
27
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
28
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
29
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
0
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
1

Với số lần truy cập thấp - Cụm từ thông dụng có hiệu suất cao nhất. Với nhiều lần truy cập, cách tiếp cận hàm lambda là hiệu quả nhất và nó duy trì độ phức tạp về thời gian bất kể đầu vào có nhiều lần truy cập hay một lần truy cập. Nhược điểm chính (tính toán dư thừa khi tỷ lệ trúng thấp) được biến thành điểm mạnh chính của nó vì tính dự phòng làm cho nó trở nên mạnh mẽ khi nhập liệu

Phần kết luận

Trong hướng dẫn này, chúng ta đã xem xét nhiều cách để kiểm tra xem một chuỗi trong Python có chứa ít nhất một ký tự hay không. Chúng ta đã xem xét hàm

str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
2,
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
3,
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
4 và
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
70, cũng như cách trừu tượng hóa logic này bằng lệnh gọi hàm lambda bằng cách sử dụng
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
5 và
str1 = "918"
print("String is whole numeric?", str1.isnumeric())
str2 = "The meaning of the universe is 42"
print("String is whole numeric?", str2.isnumeric())
7. Sau đó, chúng tôi đã khám phá Biểu thức chính quy và đánh giá các cách tiếp cận với đầu vào khác nhau

Làm cách nào để kiểm tra xem một chuỗi có chứa cả bảng chữ cái và số trong Python không?

Có thể kiểm tra các chữ cái trong Chuỗi Python bằng cách sử dụng phương thức isalpha() và các số có thể được kiểm tra bằng phương thức isdigit() .

Làm cách nào để kiểm tra xem một chuỗi chỉ chứa bảng chữ cái và dấu cách trong Python?

Phương pháp #1. Sử dụng all() + isspace() + isalpha() . Trong phần này, chúng tôi so sánh chuỗi cho tất cả các phần tử chỉ là bảng chữ cái hoặc dấu cách.