Ralat Python: ValueError: literal tidak sah untuk int() dengan asas 10: 'xxx', apakah penyelesaiannya?

WBOY
Lepaskan: 2023-08-27 13:48:27
asal
2783 orang telah melayarinya

Python报错:ValueError: invalid literal for int() with base 10: 'xxx',解决方法是?

Ralat Python: ValueError: literal tidak sah untuk int() dengan asas 10: 'xxx', apakah penyelesaiannya?

Dalam pengaturcaraan Python, kita sering menghadapi pelbagai mesej ralat. Antaranya, ValueError ialah jenis ralat biasa Apabila kita cuba menukar aksara yang tidak sah kepada integer, ralat ValueError akan dicetuskan. Situasi biasa ialah apabila menggunakan fungsi int() untuk menukar rentetan, rentetan mengandungi aksara bukan angka atau aksara angka tidak sah.

Sebagai contoh, apabila kita menjalankan kod berikut:

num = int('xxx')
Salin selepas log masuk

, ValueError: literal tidak sah untuk int() dengan asas 10: mesej ralat 'xxx' akan muncul.

Jadi, bagaimana untuk menyelesaikan ralat ini? Di bawah ini saya akan memperkenalkan beberapa penyelesaian biasa.

Kaedah 1: Semak sama ada rentetan mengandungi aksara bukan angka

Pertama, kita perlu menyemak sama ada rentetan yang ditukar mengandungi aksara bukan angka. Menukar rentetan kepada integer hanya boleh berjaya jika ia terdiri sepenuhnya daripada aksara angka. Kita boleh menggunakan kaedah isdigit() untuk menentukan sama ada rentetan mengandungi aksara angka sahaja.

num_str = 'xxx'
if num_str.isdigit():
    num = int(num_str)
else:
    print("字符串中含有非数字字符")
Salin selepas log masuk

Kaedah 2: Gunakan pernyataan cuba-kecuali untuk menangkap pengecualian

Penyelesaian lain ialah menggunakan pernyataan cuba-kecuali untuk menangkap pengecualian. Kita boleh menggunakan pernyataan cuba semasa menukar rentetan menggunakan fungsi int() dan mengendalikan pengecualian ValueError dalam kecuali blok.

num_str = 'xxx'
try:
    num = int(num_str)
except ValueError:
    print("字符串无法转换为整数")
Salin selepas log masuk

Kaedah 3: Gunakan ungkapan biasa untuk menapis aksara bukan angka

Menggunakan ungkapan biasa boleh menapis aksara bukan angka dengan mudah. Kita boleh menggunakan fungsi sub() dalam modul semula, digabungkan dengan ungkapan biasa, untuk menggantikan aksara bukan angka dalam rentetan dengan rentetan kosong.

import re

num_str = 'xxx'
num_str = re.sub(r'D', '', num_str)
num = int(num_str)
Salin selepas log masuk

Di atas ialah beberapa penyelesaian biasa Dengan mengelakkan aksara bukan angka, menggunakan pengendalian pengecualian atau menggunakan ungkapan biasa untuk menapis aksara bukan angka, kami boleh berjaya menyelesaikan ValueError: literal tidak sah untuk int() dengan asas 10: 'xxx. 'kesilapan.

Semoga artikel ini dapat membantu anda memahami dan menyelesaikan ralat ini!

Atas ialah kandungan terperinci Ralat Python: ValueError: literal tidak sah untuk int() dengan asas 10: 'xxx', apakah penyelesaiannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan