Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Các cách tăng ký tự (increment character) trong Python


Python không cho phép cộng int vào str trực tiếp. Cần chuyển đổi qua mã ASCII/Unicode.

Cách 1: ord() + chr() - Chuẩn, rõ ràng

char = 't'
# Chuyển char -> mã ASCII/Unicode
code = ord(char)      # 116
# Tăng mã
code += 1             # 117
# Chuyển ngược
next_char = chr(code) # 'u'
print(f"Ký tự sau '{char}' là '{next_char}'")

Kết quả

Ký tự sau 't' là 'u'

Cách 2: bytes - Thao tác trên byte level

char = 't'
# Str -> bytes (UTF-8)
b = bytes(char, 'utf-8')  # b't'
# Tăng byte đầu tiên
next_byte = b[0] + 1      # 117
# Byte -> char
next_char = chr(next_byte)
print(f"Ký tự sau '{char}' là '{next_char}'")

Cách 3: Increment ký tự trong chuỗi dài

name = "tutorialspoint"
# Chuyển toàn bộ sang bytes
b = bytes(name, 'utf-8')
# Tăng ký tự tại index 6 ('a' -> 'b')
index = 6
new_byte = b[index] + 1
# Tạo bytes mới (bytes immutable!)
new_bytes = b[:index] + bytes([new_byte]) + b[index+1:]
# Decode về str
new_name = new_bytes.decode('utf-8')
print(f"Sau khi tăng 'a': {new_name}")  # tutoriblspoint

Lưu ý quan trọng

  • String immutable → không sửa được in-place.
  • Bytes immutable → phải tạo bytes mới.
  • Cách ord/chr hoạt động với Unicode đầy đủ (bao gồm emoji, tiếng Việt...).
  • Cách bytes phụ thuộc encoding (UTF-8: 1 char có thể >1 byte).

Ví dụ Unicode

# Tiếng Việt
ch = 'à'
print(chr(ord(ch) + 1))  # á

# Emoji
emoji = '😀'  # U+1F600
print(chr(ord(emoji) + 1))  # 😁 (U+1F601)

Kết luận

Dùng ord() + chr() để tăng ký tự an toàn, hỗ trợ Unicode đầy đủ. Cách bytes phức tạp hơn, chỉ dùng khi cần thao tác byte-level cụ thể.