python数字转换英文26字母_使用Python轻松实现字母数字转换

class Alphanumeric(object):

ALPHABET_LENGTH = 26

def __init__(self, nrange=None):

self.current_letter = 'z'

self.current_number = 0

self.nrange = nrange

def forward_letter(self, letter, positions):

if letter.islower():

unicode_point = ord('a')

else:

unicode_point = ord('A')

start = ord(letter) - unicode_point

offset = ((start + positions) % self.ALPHABET_LENGTH) + unicode_point

self.current_letter = chr(offset)

return self.current_letter

def backward_letter(self, letter, positions):

if letter.islower():

unicode_point = ord('a')

else:

unicode_point = ord('A')

start = ord(letter) - unicode_point

offset = ((start - positions) % self.ALPHABET_LENGTH) + unicode_point

self.current_letter = chr(offset)

return self.current_letter

def next_letter(self):

return self.forward_letter(self.current_letter, 1)

def previous_letter(self):

return self.backward_letter(self.current_letter, 1)

def forward_number(self, number, positions):

if not self.nrange:

self.current_number = number + positions

return self.current_number

index = self.nrange.index(number)

start = index + positions

offset = (start % len(self.nrange))

self.current_number = self.nrange[offset]

return self.current_number

def backward_number(self, number, positions):

if not self.nrange:

return number - positions

index = self.nrange.index(number)

start = index - positions

offset = (start % len(self.nrange))

self.current_number = self.nrange[offset]

return self.current_number

def next_number(self):

return self.forward_number(self.current_number, 1)

def previous_number(self):

return self.backward_number(self.current_number, 1)

def forward_alphanumeric(self, alpha, positions, ignore_numbers=False, ignore_letters=False):

result = ""

for char in alpha:

if char.isdigit() and not ignore_numbers:

char = str(self.forward_number(int(char), positions))

if char.isalpha() and not ignore_letters:

char = self.forward_letter(char, positions)

result += char

return result

def backward_alphanumeric(self, alpha, positions, ignore_numbers=False, ignore_letters=False):

result = ""

for char in alpha:

if char.isdigit() and not ignore_numbers:

char = str(self.backward_number(int(char), positions))

if char.isalpha() and not ignore_letters:

char = self.backward_letter(char, positions)

result += char

return result

你可能感兴趣的:(python数字转换英文26字母_使用Python轻松实现字母数字转换)