Trong Python, có một số đối tượng có thể lặp lại nhất định – danh sách, bộ dữ liệu và chuỗi – có thể truy cập các mục hoặc ký tự của chúng bằng cách sử dụng số chỉ mục của chúng.
Ví dụ: để truy cập ký tự đầu tiên trong chuỗi, bạn sẽ làm như sau:
greet = "Hello World!"
print(greet[0])
# H
Để truy cập giá trị của ký tự đầu tiên trong greet
ở trên, chúng tôi đã sử dụng số chỉ mục của nó: greet[0]
.
Nhưng có những trường hợp bạn sẽ gặp lỗi “TypeError: string indices must be integers” khi cố gắng truy cập một ký tự trong chuỗi.
Trong bài viết này, bạn sẽ thấy lý do xảy ra lỗi này và cách khắc phục.
Điều gì gây ra “TypeError: chỉ số chuỗi phải là số nguyên” trong Python?
Có hai lý do phổ biến khiến lỗi “TypeError: string indices must be integers” có thể xuất hiện.
Chúng ta sẽ nói về những lý do này và giải pháp của chúng trong hai phần phụ khác nhau.
Cách khắc phục TypeError: string indices must be integers
Lỗi chuỗi trong Python
Như chúng ta đã thấy trong phần trước, để truy cập một ký tự trong chuỗi, bạn sử dụng chỉ mục của ký tự đó.
Chúng tôi nhận được lỗi “TypeError: string indices must be integers” khi chúng tôi cố gắng truy cập một ký tự bằng cách sử dụng giá trị chuỗi của nó thay vì số chỉ mục.
Đây là một ví dụ để giúp bạn hiểu:
greet = "Hello World!"
print(greet["H"])
# TypeError: string indices must be integers
Như bạn có thể thấy trong đoạn mã trên, chúng tôi gặp lỗi khi nói TypeError: string indices must be integers
.
Điều này xảy ra bởi vì chúng tôi đã cố gắng truy cập H
sử dụng giá trị của nó (“H”) thay vì số chỉ mục của nó.
Đó là, greet["H"]
thay vì greet[0]
. Đó chính xác là cách khắc phục.
Giải pháp cho vấn đề này khá đơn giản:
- Không bao giờ sử dụng chuỗi để truy cập các mục/ký tự khi làm việc với các đối tượng có thể lặp lại yêu cầu bạn sử dụng số chỉ mục (số nguyên) khi truy cập các mục/ký tự.
Cách khắc phục TypeError: string indices must be integers
Lỗi khi cắt chuỗi trong Python
Khi bạn cắt một chuỗi trong Python, một dãy ký tự từ chuỗi được trả về dựa trên các tham số đã cho (start
và end
thông số).
Đây là một ví dụ:
greet = "Hello World!"
print(greet[0:6])
# Hello
Trong đoạn mã trên, chúng tôi đã cung cấp hai tham số – 0 và 6. Điều này trả về tất cả các ký tự trong chỉ mục 0 và chỉ mục 6.
Chúng tôi nhận được lỗi “TypeError: string indices must be integers” khi chúng tôi sử dụng cú pháp slice không chính xác.
Đây là một ví dụ để chứng minh rằng:
greet = "Hello World!"
print(greet[0,6])
# TypeError: string indices must be integers
Lỗi trong mã rất dễ bỏ sót vì chúng tôi đã sử dụng số nguyên – nhưng chúng tôi vẫn gặp lỗi. Trong những trường hợp như vậy, thông báo lỗi có thể gây hiểu lầm.
Chúng tôi gặp phải lỗi này vì chúng tôi đã sử dụng sai cú pháp. Trong ví dụ của chúng tôi, chúng tôi đã sử dụng dấu phẩy khi tách các start
và end
thông số: [0,6]
. Đây là lý do tại sao chúng tôi gặp lỗi.
Để khắc phục điều này, bạn có thể thay dấu phẩy thành dấu hai chấm.
Khi cắt chuỗi trong Python, bạn bắt buộc phải tách chuỗi start
và end
tham số sử dụng dấu hai chấm – [0:6]
.
Tóm lược
Trong bài viết này, chúng ta đã nói về lỗi “TypeError: string indices must be integers” trong Python.
Lỗi này xảy ra khi làm việc với chuỗi Python vì hai lý do chính – sử dụng chuỗi thay vì số chỉ mục (số nguyên) khi truy cập một ký tự trong chuỗi và sử dụng sai cú pháp khi cắt chuỗi trong Python.
Chúng tôi đã xem các ví dụ gây ra lỗi này trong hai phần phụ và tìm hiểu cách khắc phục chúng.
Chúc mừng mã hóa!