Cara mengecek apakah ada angka dalam string python

Metode _______ 96 ______ mengembalikan ________ 97 _______ jika semua karakter dalam string adalah digit. Jika tidak, ia mengembalikan False

Contoh

str1 = '342'


str2 = 'python'


# Output: True
#         False

Sintaks String isdigit()

Sintaks dari isdigit() adalah

string.isdigit()
_

isdigit() Parameter

isdigit()_ tidak menggunakan parameter apa pun


Mengembalikan Nilai dari isdigit()

isdigit() kembali

  • Benar jika semua karakter dalam string adalah angka
  • Salah jika setidaknya satu karakter bukan angka

Contoh 1. Bekerja dari isdigit()

s = "28212"


# contains alphabets and spaces
s = "Mo3 nicaG el l22er"

Keluaran

True
False

Digit adalah karakter yang memiliki nilai properti

  • string.isdigit()
    _2
  • string.isdigit()
    _3

Dalam Python, superskrip dan subskrip (biasanya ditulis menggunakan unicode) juga dianggap sebagai karakter digit. Oleh karena itu, jika string berisi karakter ini bersama dengan karakter desimal, isdigit() mengembalikan True

Angka romawi, pembilang mata uang, dan pecahan (biasanya ditulis menggunakan unicode) dianggap sebagai karakter numerik tetapi bukan digit. isdigit() mengembalikan False jika string berisi karakter ini

Apakah Anda sedang membuat skrip verifikasi untuk input pengguna, formulir login yang meminta pengguna untuk memasukkan karakter dalam kata sandi - memeriksa apakah string berisi karakter bukanlah operasi yang tidak biasa

Dalam tutorial ini - kita akan melihat banyak cara untuk memeriksa apakah sebuah string berisi digit/angka dengan Python, termasuk tolok ukur untuk pendekatan yang paling efisien pada akhirnya

Periksa Jika String Berisi Angka dengan Python

Ada beberapa cara untuk memeriksa apakah suatu karakter adalah angka (

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), yang dapat Anda pasangkan dengan for-loop, untuk memeriksa setidaknya satu hit positif. Sebagai alternatif, Anda dapat menggunakan Ekspresi Reguler sebagai pencocokan pola umum, yang fleksibel, andal, dan dirancang untuk diterapkan pada korpus teks yang besar. Akhirnya - Anda selalu dapat
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 setiap karakter diberi pernyataan bersyarat, dan mengembalikan
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 adalah
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 di antaranya menghasilkan
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

Memilih di antara ini harus mempertimbangkan efisiensi metode, verbositas dan gaya pengkodean, serta tugas hulu atau hilir yang terkait dengan operasi.

Periksa apakah String Berisi Nomor dengan ord()

Fungsi

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 mengambil karakter dan mengembalikan nilai ASCII-nya

Nilai ASCII dari

String is whole numeric? True 
String is whole numeric? False
_0 adalah 48, dan nilai ASCII dari
String is whole numeric? True 
String is whole numeric? False
1 adalah 57. Angka apa pun di antaranya, dengan ekstensi, akan memiliki nilai ASCII antara 48 dan 57. Sekarang untuk memeriksa apakah string memiliki angka, kami akan menelusuri seluruh string input dan memeriksa nilai ASCII dari setiap karakter, jika nilai ASCII lebih dari 47 dan kurang dari 58, itu berarti angka, dan kami akan mengembalikan
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

input_string = "My name is Satyam & I am 22 yrs old"
flag = False
for ch in input_string:
    ascii_code = ord(ch)
    if 47 < ascii_code < 58:
        flag = True
        break
if flag:
    print("Yes, the string contains a number.")
else:
    print("No, the string does not contain a number.")

Ini menghasilkan

Yes, the string contains a number.

Periksa apakah String Berisi Angka dengan isnumeric()

Fungsi

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 mengembalikan
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 jika string input hanya berisi angka, jika tidak, ia mengembalikan
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())
_

Ini menghasilkan

String is whole numeric? True 
String is whole numeric? False

Catatan. Fungsi

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 tidak akan berperilaku seperti yang Anda harapkan untuk angka negatif atau float. Jika kita melewatkan string hanya dengan angka negatif atau float, itu akan mengembalikan
String is whole numeric? True 
String is whole numeric? False
5, karena
String is whole numeric? True 
String is whole numeric? False
8 dan
String is whole numeric? True 
String is whole numeric? False
9 karakter yang terkait dengan angka negatif dan float memang, bukan angka

Padahal, karena karakter hanyalah string dengan panjang 1 di Python - Anda dapat mengulang melalui karakter dan menggunakan

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 untuk memeriksa apakah itu angka

input_string = "My name is Satyam & I am 22 yrs old"
flag = False
for ch in input_string:
    if ch.isnumeric():
        flag = True
        break
if flag:
    print("Yes, the string contains a number.")
else:
    print("No, the string does not contain a number.")

Periksa apakah String Berisi Angka dengan isdigit()

Fungsi

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 memeriksa apakah semua karakter dalam string adalah digit. Jika ya - mengembalikan
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, dan jika tidak, mengembalikan
String is whole numeric? True 
String is whole numeric? False
5. Sekali lagi, karena karakter hanyalah string dengan panjang 1 di Python - metode ini dapat digunakan dalam satu lingkaran untuk setiap karakter

input_string = "My name is Satyam & I am 22 yrs old"
flag = False
for ch in input_string:
    if ch.isdigit():
        flag = True
        break
if flag:
    print("Yes, the string contains a number.")
else:
    print("No, the string does not contain a number.")

Catatan. Metode

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 hanya berperilaku dengan cara yang sama seperti
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, dan jika Anda meneruskan string yang berisi float atau angka negatif padanya,
String is whole numeric? True 
String is whole numeric? False
5 dikembalikan karena karakter khusus bukan angka. Namun, pada level karakter, jika selama satu nilai
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 sudah cukup untuk menentukan apakah string berisi angka - ini berlaku

Perbedaan Antara isnumeric() dan isdigit()?

Jadi, apa perbedaan antara

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 dan
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?

  • 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 memeriksa apakah karakter apa pun merupakan representasi unicode dari nilai numerik (yang mencakup representasi numerik romawi, superskrip, subskrip, dan pecahan)
  • 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 memeriksa apakah ada karakter yang merupakan digit unicode (yang tidak menyertakan representasi angka romawi, tetapi menyertakan super/subskrip dan pecahan)
  • input_string = "My name is Satyam & I am 22 yrs old"
    flag = False
    for ch in input_string:
        if ch.isdigit():
            flag = True
            break
    if flag:
        print("Yes, the string contains a number.")
    else:
        print("No, the string does not contain a number.")
    
    _0 memeriksa apakah ada karakter yang merupakan digit desimal (yang akan mengembalikan
    String is whole numeric? True 
    String is whole numeric? False
    
    5 untuk apa pun yang bukan
    input_string = "My name is Satyam & I am 22 yrs old"
    flag = False
    for ch in input_string:
        if ch.isdigit():
            flag = True
            break
    if flag:
        print("Yes, the string contains a number.")
    else:
        print("No, the string does not contain a number.")
    
    5 dalam basis 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 adalah metode yang paling luas, sedangkan
input_string = "My name is Satyam & I am 22 yrs old"
flag = False
for ch in input_string:
    if ch.isdigit():
        flag = True
        break
if flag:
    print("Yes, the string contains a number.")
else:
    print("No, the string does not contain a number.")
0 adalah yang paling sempit di antara ketiganya

Periksa apakah String Berisi Angka dengan map() dan any()

Fungsi

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 mengeksekusi fungsi yang disediakan untuk setiap elemen iterable yang diteruskan dalam fungsi peta. Setiap elemen iterable diteruskan ke fungsi sebagai parameter

map(function, iterable)

input_string = "My name is Satyam & I am 22 yrs old"
flag = False
for ch in input_string:
    if ch.isdigit():
        flag = True
        break
if flag:
    print("Yes, the string contains a number.")
else:
    print("No, the string does not contain a number.")
_9 dieksekusi untuk setiap item dari
map(function, iterable)
0. Ini memungkinkan logika yang sangat fleksibel dan kuat, hanya dibatasi oleh keluasan
input_string = "My name is Satyam & I am 22 yrs old"
flag = False
for ch in input_string:
    if ch.isdigit():
        flag = True
        break
if flag:
    print("Yes, the string contains a number.")
else:
    print("No, the string does not contain a number.")
9 yang Anda panggil pada input. Metode mengembalikan
map(function, iterable)
_2 contoh, yang dapat dengan mudah diubah menjadi koleksi lain seperti daftar atau set

Kita dapat menulis fungsi yang mengembalikan boolean yang mewakili apakah suatu karakter adalah angka, dan panggilan

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 akan menghasilkan daftar nilai 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 mengembalikan
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 jika ada elemen dari iterable yang diteruskan adalah
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, jika tidak, ia mengembalikan
String is whole numeric? True 
String is whole numeric? False
5

Merangkai keduanya bersama-sama - kita dapat membuat skrip pendek tingkat tinggi dan mengabstraksi for-loop

Ini menghasilkan

Is there a number present? True

Jika fungsi Anda adalah satu baris - tidak perlu mengekstraknya sebagai fungsi bernama. Anda dapat menulis fungsi lambda anonim demi singkatnya

Lihat panduan praktis dan praktis kami untuk mempelajari Git, dengan praktik terbaik, standar yang diterima industri, dan menyertakan lembar contekan. Hentikan perintah Googling Git dan benar-benar pelajari itu

input_string = "My name is Satyam & I am 22 yrs old"
contains_number = any(list(map(lambda ch: ch.isdigit(), input_string)))
print("Is there any number present?", contains_number)

Ini juga mengakibatkan

Is there any number present? True

Periksa apakah String Berisi Angka dengan Python dengan Ekspresi Reguler

Ekspresi Reguler adalah pola pencarian yang dirancang untuk dicocokkan dengan teks masukan. Mereka fleksibel dan sesuai dengan sifatnya - Anda dapat menulis sejumlah ekspresi yang sewenang-wenang untuk pola yang sama untuk dicari, serta mencakup pola traksi apa pun yang dapat Anda pikirkan

Modul

map(function, iterable)
8 Python digunakan untuk menulis, menyusun, dan mencocokkan teks dengan ekspresi reguler. Itu memperlihatkan berbagai metode, seperti
map(function, iterable)
_9 yang cocok apakah sebuah string dimulai dengan pola,
Is there a number present? True
0 yang menemukan kejadian pertama dari kemungkinan banyak kecocokan dalam sebuah string, dan
Is there a number present? True
1 yang memeriksa semua kejadian

Catatan. Ketiga metode menerima

Is there a number present? True
2 dan
Is there a number present? True
3 argumen dan menjalankan pencarian untuk
Is there a number present? True
2 di
Is there a number present? True
3 string

Pola yang mengidentifikasi digit adalah

Is there a number present? True
6

Yes, the string contains a number.
_0

Metode

Is there a number present? True
0 mengembalikan objek
Is there a number present? True
8, berisi kecocokan yang ditemukan dan indeks awal dan akhir

Yes, the string contains a number.
_1

Objek dapat dievaluasi ke nilai boolean berdasarkan apakah itu objek

Is there a number present? True
8 atau
input_string = "My name is Satyam & I am 22 yrs old"
contains_number = any(list(map(lambda ch: ch.isdigit(), input_string)))
print("Is there any number present?", contains_number)
0. Ini menghasilkan

Yes, the string contains a number.
_2

Berbeda dengan metode

Is there a number present? True
0, metode
Is there a number present? True
1 mengembalikan semua kemunculan pola, bukan hanya yang pertama

Yes, the string contains a number.
_3

Ini menghasilkan

Yes, the string contains a number.
_2

Tolok ukur

Bagaimana dengan performanya?

Yes, the string contains a number.
_5

Ini menghasilkan

Yes, the string contains a number.
_6

Umumnya pendekatan for-loop berjalan pada waktu yang hampir bersamaan, dengan sedikit overhead dari metode spesifik. Lambda dengan

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 secara de facto adalah yang paling lambat (banyak operasi yang berlebihan, karena mengonversi daftar menjadi daftar dan kemudian menguranginya), sementara Ekspresi Reguler memiliki runtime tercepat dengan varians terendah di sekitarnya (mereka secara konsisten cepat)

Namun, pada teks masukan yang lebih panjang, kerumitan waktu pada masing-masing pendekatan berbeda ditekankan, terutama bergantung pada jumlah digit yang cocok (apakah digitnya umum atau tidak)

String pertama menghasilkan urutan acak dengan jumlah digit dan karakter yang kira-kira sama, sedangkan yang terakhir adalah string khusus karakter dengan satu digit pada akhirnya (kompleksitas waktu terburuk)

Yes, the string contains a number.
7
Yes, the string contains a number.
8
Yes, the string contains a number.
9
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

Dengan jumlah klik yang rendah - Ekspresi Reguler adalah yang paling berperforma baik. Dengan banyak klik, pendekatan fungsi lambda adalah yang paling berperforma baik, dan tetap mempertahankan kerumitan waktunya terlepas dari apakah masukan memiliki banyak klik atau satu. Kelemahan utama (perhitungan redundan saat hit rate rendah) diubah menjadi kekuatan utamanya karena redundansi membuatnya kuat untuk input

Kesimpulan

Dalam tutorial ini, kita melihat beberapa cara untuk memeriksa apakah sebuah string di Python berisi setidaknya satu karakter. Kami telah melihat fungsi

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 dan
input_string = "My name is Satyam & I am 22 yrs old"
flag = False
for ch in input_string:
    if ch.isdigit():
        flag = True
        break
if flag:
    print("Yes, the string contains a number.")
else:
    print("No, the string does not contain a number.")
0, serta cara mengabstraksi logika ini dengan panggilan fungsi lambda menggunakan
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 dan
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. Kemudian, kami menjelajahi Ekspresi Reguler dan membandingkan pendekatan dengan input yang bervariasi

Bagaimana Anda memeriksa apakah suatu string berisi angka dengan Python?

Periksa apakah string berisi angka menggunakan any() + isdigit() .

Bagaimana Anda memeriksa apakah suatu string berisi angka?

Untuk mengetahui apakah string yang diberikan berisi angka, konversikan ke larik karakter dan temukan apakah setiap karakter dalam larik adalah angka menggunakan metode isDigit() dari Karakter . .

Bagaimana Anda memeriksa apakah suatu nomor tidak ada dalam string python?

isnumeric() memeriksa apakah semua karakter string adalah karakter numerik atau tidak. Itu akan mengembalikan True jika semua karakter numerik dan akan mengembalikan False bahkan jika satu karakter non-numerik.

Bagaimana Anda memeriksa apakah suatu angka berisi angka tertentu Python?

String Python Metode isdigit() . Pangkat, seperti ², juga dianggap sebagai angka.