1# coding: utf-8 2 3__doc__ = u""" 4 >>> slice_start_end(u'abcdef', 2, 3) 5 c 6 >>> slice_start(u'abcdef', 2, 3) 7 cdef 8 >>> slice_end(u'abcdef', 2, 3) 9 ab 10 >>> slice_all(u'abcdef', 2, 3) 11 abcdef 12 >>> slice_start_none(u'abcdef', 2, 3) 13 cdef 14 >>> slice_none_end(u'abcdef', 2, 3) 15 ab 16 >>> slice_none_none(u'abcdef', 2, 3) 17 abcdef 18 19 >>> slice_start_end(u'abcdef', 2, 10) 20 cdef 21 >>> slice_start(u'abcdef', 2, 10) 22 cdef 23 >>> slice_end(u'abcdef', 2, 10) 24 ab 25 >>> slice_all(u'abcdef', 2, 10) 26 abcdef 27 28 >>> slice_start_end(u'abcdef', 0, 5) 29 abcde 30 >>> slice_start(u'abcdef', 0, 5) 31 abcdef 32 >>> slice_end(u'abcdef', 0, 5) 33 <BLANKLINE> 34 >>> slice_all(u'abcdef', 0, 5) 35 abcdef 36 >>> slice_start_none(u'abcdef', 0, 5) 37 abcdef 38 >>> slice_none_end(u'abcdef', 0, 5) 39 <BLANKLINE> 40 >>> slice_none_none(u'abcdef', 0, 5) 41 abcdef 42 43 >>> slice_start_end(u'abcdef', -6, -1) 44 abcde 45 >>> slice_start(u'abcdef', -6, -1) 46 abcdef 47 >>> slice_end(u'abcdef', -6, -1) 48 <BLANKLINE> 49 >>> slice_all(u'abcdef', -6, -1) 50 abcdef 51 >>> slice_start_none(u'abcdef', -6, -1) 52 abcdef 53 >>> slice_none_end(u'abcdef', -6, -1) 54 <BLANKLINE> 55 >>> slice_none_none(u'abcdef', -6, -1) 56 abcdef 57 58 >>> slice_start_end(u'abcdef', -6, -7) 59 <BLANKLINE> 60 >>> slice_start(u'abcdef', -6, -7) 61 abcdef 62 >>> slice_end(u'abcdef', -6, -7) 63 <BLANKLINE> 64 >>> slice_all(u'abcdef', -6, -7) 65 abcdef 66 >>> slice_start_none(u'abcdef', -6, -7) 67 abcdef 68 >>> slice_none_end(u'abcdef', -6, -7) 69 <BLANKLINE> 70 >>> slice_none_none(u'abcdef', -6, -7) 71 abcdef 72 73 >>> slice_start_end(u'abcdef', -7, -7) 74 <BLANKLINE> 75 >>> slice_start(u'abcdef', -7, -7) 76 abcdef 77 >>> slice_end(u'abcdef', -7, -7) 78 <BLANKLINE> 79 >>> slice_all(u'abcdef', -7, -7) 80 abcdef 81 >>> slice_start_none(u'abcdef', -7, -7) 82 abcdef 83 >>> slice_none_end(u'abcdef', -7, -7) 84 <BLANKLINE> 85 >>> slice_none_none(u'abcdef', -7, -7) 86 abcdef 87 88 >>> slice_start_end(u'aАbБcСdДeЕfФ', 2, 8) 89 bБcСdД 90 >>> slice_start(u'aАbБcСdДeЕfФ', 2, 8) 91 bБcСdДeЕfФ 92 >>> slice_end(u'aАbБcСdДeЕfФ', 2, 8) 93 aА 94 >>> slice_all(u'aАbБcСdДeЕfФ', 2, 8) 95 aАbБcСdДeЕfФ 96 >>> slice_start_none(u'aАbБcСdДeЕfФ', 2, 8) 97 bБcСdДeЕfФ 98 >>> slice_none_end(u'aАbБcСdДeЕfФ', 2, 8) 99 aА 100 >>> slice_none_none(u'aАbБcСdДeЕfФ', 2, 8) 101 aАbБcСdДeЕfФ 102 103 >>> slice_start_end(u'АБСДЕФ', 2, 4) 104 СД 105 >>> slice_start(u'АБСДЕФ', 2, 4) 106 СДЕФ 107 >>> slice_end(u'АБСДЕФ', 2, 4) 108 АБ 109 >>> slice_all(u'АБСДЕФ', 2, 4) 110 АБСДЕФ 111 >>> slice_start_none(u'АБСДЕФ', 2, 4) 112 СДЕФ 113 >>> slice_none_end(u'АБСДЕФ', 2, 4) 114 АБ 115 >>> slice_none_none(u'АБСДЕФ', 2, 4) 116 АБСДЕФ 117 118 >>> slice_start_end(u'АБСДЕФ', -4, -2) 119 СД 120 >>> slice_start(u'АБСДЕФ', -4, -2) 121 СДЕФ 122 >>> slice_end(u'АБСДЕФ', -4, -2) 123 АБ 124 >>> slice_all(u'АБСДЕФ', -4, -2) 125 АБСДЕФ 126 >>> slice_start_none(u'АБСДЕФ', -4, -2) 127 СДЕФ 128 >>> slice_none_end(u'АБСДЕФ', -4, -2) 129 АБ 130 >>> slice_none_none(u'АБСДЕФ', -4, -2) 131 АБСДЕФ 132 133 >>> slice_start_end(None, 2, 4) 134 Traceback (most recent call last): 135 TypeError: 'NoneType' object is not subscriptable 136 >>> slice_start(None, 2, 4) 137 Traceback (most recent call last): 138 TypeError: 'NoneType' object is not subscriptable 139 >>> slice_end(None, 2, 4) 140 Traceback (most recent call last): 141 TypeError: 'NoneType' object is not subscriptable 142 >>> slice_all(None, 2, 4) 143 Traceback (most recent call last): 144 TypeError: 'NoneType' object is not subscriptable 145 >>> slice_start_none(None, 2, 4) 146 Traceback (most recent call last): 147 TypeError: 'NoneType' object is not subscriptable 148 >>> slice_none_end(None, 2, 4) 149 Traceback (most recent call last): 150 TypeError: 'NoneType' object is not subscriptable 151 >>> slice_none_none(None, 2, 4) 152 Traceback (most recent call last): 153 TypeError: 'NoneType' object is not subscriptable 154 155 >>> slice_start_end(u'abcdef', SSIZE_T_MAX, SSIZE_T_MIN) 156 <BLANKLINE> 157 >>> slice_start(u'abcdef', SSIZE_T_MAX, SSIZE_T_MIN) 158 <BLANKLINE> 159 >>> slice_end(u'abcdef', SSIZE_T_MAX, SSIZE_T_MIN) 160 abcdef 161 >>> slice_all(u'abcdef', SSIZE_T_MAX, SSIZE_T_MIN) 162 abcdef 163 >>> slice_start_none(u'abcdef', SSIZE_T_MAX, SSIZE_T_MIN) 164 <BLANKLINE> 165 >>> slice_none_end(u'abcdef', SSIZE_T_MAX, SSIZE_T_MIN) 166 abcdef 167 >>> slice_none_none(u'abcdef', SSIZE_T_MAX, SSIZE_T_MIN) 168 abcdef 169""" 170 171cdef extern from *: 172 cdef Py_ssize_t PY_SSIZE_T_MIN 173 cdef Py_ssize_t PY_SSIZE_T_MAX 174 175SSIZE_T_MAX = PY_SSIZE_T_MAX 176SSIZE_T_MIN = PY_SSIZE_T_MIN 177 178import sys 179 180if sys.version_info[0] >= 3: 181 __doc__ = __doc__.replace(u"(u'", u"('").replace(u" u'", u" '") 182 183def slice_start_end(unicode s, Py_ssize_t i, Py_ssize_t j): 184 print(s[i:j]) 185 186def slice_start(unicode s, Py_ssize_t i, Py_ssize_t j): 187 print(s[i:]) 188 189def slice_end(unicode s, Py_ssize_t i, Py_ssize_t j): 190 print(s[:i]) 191 192def slice_all(unicode s, Py_ssize_t i, Py_ssize_t j): 193 print(s[:]) 194 195def slice_start_none(unicode s, Py_ssize_t i, Py_ssize_t j): 196 print(s[i:None]) 197 198def slice_none_end(unicode s, Py_ssize_t i, Py_ssize_t j): 199 print(s[None:i]) 200 201def slice_none_none(unicode s, Py_ssize_t i, Py_ssize_t j): 202 print(s[None:None]) 203