Python thích nâng cao ngoại lệ, điều này thường tuyệt vời. Nhưng tôi đang phải đối mặt với một số chuỗi tôi tuyệt vọng muốn chuyển đổi sang số nguyên bằng cách sử dụng ngữ nghĩa atoi/atof của C - ví dụ: atoi của "3 của 12", "3/12", "3/12", tất cả sẽ trở thành 3; atof ("3,14 giây") nên trở thành 3,14; atoi ("-99 điểm") nên trở thành -99. Tất nhiên Python có các hàm atoi và atof, không hoạt động như atoi và atof và chính xác giống như các hàm tạo int và float của Python.Python tương đương với atoi/atof
Điều tốt nhất tôi có cho đến nay, đó là thực sự xấu xí và khó có thể mở rộng sang các định dạng phao khác nhau có sẵn:
value = 1
s = str(s).strip()
if s.startswith("-"):
value = -1
s = s[1:]
elif s.startswith("+"):
s = s[1:]
try:
mul = int("".join(itertools.takewhile(str.isdigit, s)))
except (TypeError, ValueError, AttributeError):
mul = 0
return mul * value
' atoi ("những gì về 2") 'nên trả về' 0', vì nó bắt đầu với một 'w 'và' w' không phải là chữ số. – Quuxplusone