Как интерпретировать числа с ведущими нулями как десятичные? - PullRequest
0 голосов
/ 15 мая 2019

все! Мне нужно интерпретировать числа, данные с ведущими нулями в Python, как десятичные. (на входе есть числа, а не строки!) Python2 используется, в python3 такой проблемы больше нет. У меня нет идей, как это сделать. Кто-нибудь, помогите мне, пожалуйста !!!

пример:

id = 0101
print id
# will print 65 and I need 101

id = 65
print id
# will print 65 - ok

возможное решение:

id = 0101

id = oct(id).lstrip('0')

print id
# will print 101 - ok

id = 65

id = oct(id).lstrip('0')

print id
# will print 101 - wrong, need 65

Ответы [ 2 ]

1 голос
/ 15 мая 2019

Можете ли вы привести его к последовательности?

Например:

def func(rawNumber):

   id = str(rawNumber)
   if id[0] == '0':
      res = oct(id).lstrip('0')
   else:
      res = id
   return int(res)

# then use it like this:

print(func(0101)) # will print 101
print(func(65))  # will print 65
1 голос
/ 15 мая 2019

Это нормальное поведение для Python2.Номера этого типа указаны на языке :

octinteger ::= "0" ("o" | "O") octdigit+ | "0" octdigit+

"0" octdigit+ - номера, начинающиеся с "0" -восьмеричные по замыслу.Вы не можете изменить это поведение.

Если вы хотите интерпретировать 077 как 77, самое большее, что вы можете сделать, это какие-то уродливые преобразования, подобные этому:

int(str(oct(077)).lstrip('0'))

...