Hướng dẫn python remove trailing zeros - python xóa các số không ở cuối

Tôi có một số chuỗi chữ và số như thế này

listOfNum = ['000231512-n','1209123100000-n00000','alphanumeric0000', '000alphanumeric']

Đầu ra mong muốn để loại bỏ các số 0 sẽ là:trailing zeros would be:

listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']

Đầu ra mong muốn cho các số không theo dõi hàng đầu sẽ là:leading trailing zeros would be:

listOfNum = ['231512-n','1209123100000-n00000','alphanumeric0000', 'alphanumeric']

Đầu ra mong muốn để loại bỏ cả số không dẫn đầu và dấu vết sẽ là:

listOfNum = ['231512-n','1209123100000-n', 'alphanumeric', 'alphanumeric']

Bây giờ tôi đã làm theo cách sau, xin vui lòng đề xuất một cách tốt hơn nếu có:

listOfNum = ['000231512-n','1209123100000-n00000','alphanumeric0000', \
'000alphanumeric']
trailingremoved = []
leadingremoved = []
bothremoved = []

# Remove trailing
for i in listOfNum:
  while i[-1] == "0":
    i = i[:-1]
  trailingremoved.append(i)

# Remove leading
for i in listOfNum:
  while i[0] == "0":
    i = i[1:]
  leadingremoved.append(i)

# Remove both
for i in listOfNum:
  while i[0] == "0":
    i = i[1:]
  while i[-1] == "0":
    i = i[:-1]
  bothremoved.append(i)

Loại bỏ các số không theo dấu vết từ thập phân trong Python #

Để loại bỏ các số không kéo dài từ số thập phân:

  1. Sử dụng phương thức
    listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']
    
    0 để kiểm tra xem số có phần phân số không.
  2. Nếu có, làm tròn số và trả lại.
  3. Nếu không, hãy sử dụng phương pháp
    listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']
    
    1 để tước bất kỳ số không kéo dài nào.

Copied!

from decimal import Decimal num = Decimal('1.230000') # ✅ drop trailing zeros from decimal, using normalize() def remove_exponent(d): return d.quantize(Decimal(1)) if d == d.to_integral() else d.normalize() print(remove_exponent(num)) # 👉️ 1.23 # -------------------------------- # ✅ drop trailing zeros from decimal, using str.rstrip() num_2 = Decimal('1.230000') string = str(num_2) without_trailing_zeros = string.rstrip( '0').rstrip('.') if '.' in string else string result = Decimal(without_trailing_zeros) print(result) # 👉️ 1.23

Hàm đầu tiên được lấy từ phần Câu hỏi thường gặp về các tài liệu chính thức.

Phương pháp TO_INTEGRAL làm tròn đến số nguyên gần nhất.

Copied!

from decimal import Decimal # 👇️ True print(Decimal('1.0000') == Decimal('1.0000').to_integral()) # 👇️ False print(Decimal('1.9000') == Decimal('1.9000').to_integral()) print(Decimal('1.0000').to_integral()) # 👉️ 1

Nếu số không có phần thập phân, chúng tôi sử dụng phương pháp

listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']
2 để làm tròn đến một số vị trí thập phân cố định.

Nếu số có phần thập phân, chúng tôi sử dụng phương pháp thập phân.

Copied!

from decimal import Decimal print(Decimal('1.230000').normalize()) # 👉️ 1.23 print(Decimal('3.456000000').normalize()) # 👉️ 3.456

Chúng tôi chỉ sử dụng phương thức

listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']
3 nếu số có phần thập phân vì nó có thể loại bỏ số không ở bên trái của số thập phân.

Copied!

from decimal import Decimal print(Decimal('500.000').normalize()) # 👉️ 5E+2 print(Decimal('510.100').normalize()) # 👉️ 510.1

Ngoài ra, bạn có thể sử dụng phương pháp

listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']
4.

Để loại bỏ các số không kéo dài từ số thập phân:

  1. Sử dụng phương thức
    listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']
    
    0 để kiểm tra xem số có phần phân số không.
  2. Nếu có, làm tròn số và trả lại.

Copied!

from decimal import Decimal num = Decimal('1.230000') string = str(num) without_trailing_zeros = string.rstrip( '0').rstrip('.') if '.' in string else string result = Decimal(without_trailing_zeros) print(result) # 👉️ 1.23

Nếu không, hãy sử dụng phương pháp

listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']
1 để tước bất kỳ số không kéo dài nào.

Hàm đầu tiên được lấy từ phần Câu hỏi thường gặp về các tài liệu chính thức.

Phương pháp TO_INTEGRAL làm tròn đến số nguyên gần nhất.

Ví dụ cũng kiểm tra xem chuỗi có chứa một dấu chấm hay không, vì vậy chúng tôi không cố gắng tước các số 0 từ các số không có phần thập phân, ví dụ:

listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']
8 đến
listOfNum = ['000231512-n','1209123100000-n','alphanumeric', '000alphanumeric']
9.