中文数字/数位字符 每个字符除繁简体外还有一个额外的大写字符 e.g. '陆' 和 '陸'
| 75 | |
| 76 | |
| 77 | class ChineseNumberUnit(ChineseChar): |
| 78 | """ |
| 79 | 中文数字/数位字符 |
| 80 | 每个字符除繁简体外还有一个额外的大写字符 |
| 81 | e.g. '陆' 和 '陸' |
| 82 | """ |
| 83 | |
| 84 | def __init__(self, power, simplified, traditional, big_s, big_t): |
| 85 | super(ChineseNumberUnit, self).__init__(simplified, traditional) |
| 86 | self.power = power |
| 87 | self.big_s = big_s |
| 88 | self.big_t = big_t |
| 89 | |
| 90 | def __str__(self): |
| 91 | return '10^{}'.format(self.power) |
| 92 | |
| 93 | @classmethod |
| 94 | def create(cls, index, value, numbering_type=NUMBERING_TYPES[1], small_unit=False): |
| 95 | |
| 96 | if small_unit: |
| 97 | return ChineseNumberUnit(power=index + 1, |
| 98 | simplified=value[0], traditional=value[1], big_s=value[1], big_t=value[1]) |
| 99 | elif numbering_type == NUMBERING_TYPES[0]: |
| 100 | return ChineseNumberUnit(power=index + 8, |
| 101 | simplified=value[0], traditional=value[1], big_s=value[0], big_t=value[1]) |
| 102 | elif numbering_type == NUMBERING_TYPES[1]: |
| 103 | return ChineseNumberUnit(power=(index + 2) * 4, |
| 104 | simplified=value[0], traditional=value[1], big_s=value[0], big_t=value[1]) |
| 105 | elif numbering_type == NUMBERING_TYPES[2]: |
| 106 | return ChineseNumberUnit(power=pow(2, index + 3), |
| 107 | simplified=value[0], traditional=value[1], big_s=value[0], big_t=value[1]) |
| 108 | else: |
| 109 | raise ValueError( |
| 110 | 'Counting type should be in {0} ({1} provided).'.format(NUMBERING_TYPES, numbering_type)) |
| 111 | |
| 112 | |
| 113 | class ChineseNumberDigit(ChineseChar): |