Chuyển đổi chuỗi số str thành số int, float trong Python

Kinh doanh

Nếu bạn muốn chuyển đổi một chuỗi số thành giá trị số trong Python, hãy sử dụng int () để chuyển đổi thành số nguyên và float () để chuyển đổi thành số dấu phẩy động.

Phần sau được giải thích ở đây, cùng với mã mẫu.

  • Cách sử dụng cơ bản
    • Chuyển đổi chuỗi số thành số nguyên:int()
    • Chuyển một chuỗi số thành số dấu phẩy động:float()
  • Cách sử dụng đặc biệt
    • Chuyển đổi các chuỗi ký hiệu nhị phân, bát phân và thập lục phân thành số
    • Chuyển đổi các chuỗi ký hiệu theo cấp số nhân thành các giá trị số
    • Chuyển đổi chuỗi số Ả Rập có chiều rộng đầy đủ thành số
    • Chuyển một chuỗi ký tự Trung Quốc thành số

Để chuyển đổi một giá trị số thành một chuỗi, hãy sử dụng str ().

Nếu bạn muốn chuyển đổi số hoặc chuỗi sang nhiều định dạng khác nhau, hãy sử dụng hàm format () hoặc phương thức chuỗi str.format (). Sau đó, bạn có thể chuyển đổi sang ký hiệu 0 điền, nhị phân, bát phân, thập lục phân, hàm mũ,… Xem chi tiết bài viết sau.

Nó cũng có thể chuyển đổi một danh sách các chuỗi thành một danh sách các số. Xem chi tiết bài viết sau.

Chuyển đổi chuỗi số thành số nguyên:int()

Bạn có thể sử dụng int () để chuyển đổi một chuỗi số thành các số kiểu số nguyên.

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

Số thập phân, bao gồm cả dấu thập phân và các chuỗi được phân tách bằng dấu phẩy sẽ dẫn đến Lỗi giá trị.

# print(int('1.23'))
# ValueError: invalid literal for int() with base 10: '1.23'

# print(int('10,000'))
# ValueError: invalid literal for int() with base 10: '10,000'

Các chuỗi được phân tách bằng dấu phẩy có thể được chuyển đổi bằng cách loại bỏ dấu phẩy (thay thế nó bằng một chuỗi trống) bằng cách sử dụng phương thức Replace ().

print(int('10,000'.replace(',', '')))
# 10000

Chuyển một chuỗi số thành số dấu phẩy động:float()

Một float () có thể được sử dụng để chuyển đổi một chuỗi số thành kiểu số dấu phẩy động.

print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>

Các chuỗi có phần nguyên bị bỏ qua được chuyển đổi bằng cách bổ sung phần nguyên với 0.

print(float('.23'))
# 0.23

Chuỗi số nguyên cũng được chuyển đổi thành số dấu phẩy động.

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Chuyển đổi các chuỗi ký hiệu nhị phân, bát phân và thập lục phân thành số

Nếu một cơ số được chỉ định làm đối số thứ hai cho int (), chuỗi có thể được chuyển đổi thành một số nguyên int bằng cách coi nó là một hệ nhị phân, bát phân, thập lục phân, v.v.

print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256

Như trong các ví dụ trước, nếu bỏ qua, số được coi là số thập phân.

print(int('100', 10))
print(int('100'))
# 100
# 100

Nếu cơ số được đặt thành 0, chuyển đổi dựa trên tiền tố chuỗi. Xem bên dưới để biết các tiền tố chuỗi.

  • 0b
    • 0B
  • 0o
    • 0O
  • 0x
    • 0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256

Tiền tố và bảng chữ cái hex có thể là chữ hoa hoặc chữ thường.

print(int('FF', 16))
print(int('ff', 16))
# 255
# 255

print(int('0xFF', 0))
print(int('0XFF', 0))
print(int('0xff', 0))
print(int('0Xff', 0))
# 255
# 255
# 255
# 255

Xem bài viết sau để biết thông tin về sự chuyển đổi giữa các số và chuỗi nhị phân, bát phân và thập lục phân.

Chuyển đổi các chuỗi ký hiệu theo cấp số nhân thành các giá trị số

Các chuỗi trong ký hiệu hàm mũ có thể được chuyển đổi trực tiếp sang kiểu float với float ().

print(float('1.23e-4'))
print(type(float('1.23e-4')))
# 0.000123
# <class 'float'>

print(float('1.23e4'))
print(type(float('1.23e4')))
# 12300.0
# <class 'float'>

Chữ thường e cũng có thể được viết hoa E.

print(float('1.23E-4'))
# 0.000123

Chuyển đổi chuỗi số Ả Rập có chiều rộng đầy đủ thành số

Các chữ số Ả Rập có độ rộng đầy đủ có thể được chuyển đổi trực tiếp thành số bằng int () hoặc float ().

print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>

print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>

Tuy nhiên, nếu các ký hiệu như dấu trừ và dấu chấm thập phân là các ký tự có độ rộng đầy đủ, thì một ValueError sẽ được tạo ra.

# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'

Các số có thể được chuyển đổi mà không gặp vấn đề gì nếu chúng là các ký tự toàn độ rộng, nhưng dấu trừ và dấu thập phân là các ký tự nửa độ rộng. có thể chuyển đổi bằng cách thay thế các ký hiệu có chiều rộng đầy đủ bằng các ký hiệu nửa chiều rộng bằng cách sử dụng phương thức Replace ().

print(float('-1.23'))
# -1.23

print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23

Chuyển một chuỗi ký tự Trung Quốc thành số

Hàm unicodedata.numeric () trong mô-đun unicodedata có thể được sử dụng để chuyển đổi một ký tự tiếng Trung Unicode thành một số kiểu số dấu phẩy động.

Nếu nó không phải là một chữ cái duy nhất, một lỗi sẽ xảy ra. Ngoài ra, các ký tự không phải số sẽ gây ra lỗi.

import unicodedata

print(unicodedata.numeric('五'))
print(type(unicodedata.numeric('五')))
# 5.0
# <class 'float'>

print(unicodedata.numeric('十'))
# 10.0

print(unicodedata.numeric('参'))
# 3.0

print(unicodedata.numeric('億'))
# 100000000.0

# print(unicodedata.numeric('五十'))
# TypeError: numeric() argument 1 must be a unicode character, not str

# print(unicodedata.numeric('漢'))
# ValueError: not a numeric character