Индексирование строки, получение SyntaxError / Python - PullRequest
0 голосов
/ 07 мая 2020

Итак, когда я делаю что-то вроде этого:

    x=str(19072000)
    day=x[:2]
    month=x[2:4]
    year=x[4:]
    final=day+"/"+month+"/"+year
    print(final)
I get:19/07/2000

>>>x=str(01011930)
File"(Stdin)",line 1
x=str(01011930)
                       ^
SyntaxError:invalid token

Но когда я пытаюсь сделать то же самое, но с 01011930, я получаю SyntaxError: недопустимый токен, есть идеи, почему?

1 Ответ

1 голос
/ 07 мая 2020

Проблема заключается в начале 0 в вашей целочисленной константе.

В Python 2 целое число, которое начинается с 0, считается восьмеричной константой, что не позволяет цифры 8 или 9 (и даже без них результирующее число будет сильно отличаться от того, что вы намереваетесь).

В Python 3 это вообще не разрешено, за исключением 0 сам. (Восьмеричные константы начинаются с 0o в Python 3, аналогично тому, как шестнадцатеричные константы начинаются с 0x.)

Чтобы сделать то, что вы хотите, просто удалите начальный ноль. Затем вы можете заполнить нулями, используя:

x = "%08d" % 1011930

Это установит x в строку '01011930'. Тогда ваша индексация будет работать.

Аналогично, вы можете использовать:

x = "{:08d}".format(1011930)
...