2016-04-03 13 views
10

mam problem, gdy próbuję umieścić wartość zmiennej ten problem, pokaz, gdy próbuję umieścić datę jako krotki lub listy w tej kolejnościSyntaxError nieważny żeton

rok/miesiąc/dzień

>>> a = (2016,04,03)     # i try to put date now to variable 'a' as tuple 
SyntaxError: invalid token 
>>> a = [2016,04,03]     ## i try to put date now to variable 'a' as list 
SyntaxError: invalid token 

dlaczego to się dzieje?

jak to naprawić?

co to jest znacznik w python?

+0

'04' nie ma znaczenia dla pythona, spróbuj z' 4' i '3' bez wyjścia! – Arman

+1

ya to działa, ale dlaczego działa, gdy kick zero – robert

+3

'04' ma znaczenie dla pythona, reprezentuje liczby ósemkowe w pythonie 2.x – ritesht93

Odpowiedz

1

Problem to 0 przed 4. Jeśli chcesz przechowywać tego rodzaju informacje, spróbuj użyć ciągów.

a = (2016,04,03) --> Error 
a = (2016,4,3) --> No Error 
a = ("2016","04","03") --> No Error 
a = "2016-04-03" --> you could retrieve Year, Month and Day by splitting this string 

W języku Python 2.x 04 jest interpretowany jako liczba ósemkowa. w Pythonie 3 ósemkowe są napisane w formie 0o4 jak napisane tutaj: http://docs.python.org/3.0/whatsnew/3.0.html#integers

+1

Powinieneś wyjaśnić * dlaczego * błąd nadchodzi. To jest jedno z pytań PO. To im nie pomaga. – idjaw

+0

ya knwo to, ale dlaczego dać mój błąd, kiedy używam 04 & 03 – robert

+0

@zixrobert Wystarczy przeczytać drugą odpowiedź. To faktycznie wyjaśnia to. – idjaw

6

04 jest liczbą całkowitą dosłowny w Pythonie 2.x. Jest interpretowany jako liczba-8 (ósemkowa). 09 również byłby nieprawidłowym tokenem, ponieważ 9 nie jest prawidłową liczbą ósemkową.

W języku Python 3 zmieniono formę literałów ósemkowych. Samo wyprzedzające zero nie jest już ważne; musisz wyraźnie określić bazę. Na przykład 0o12 jest równa 10.

W twoim przypadku prawdopodobnie chcesz po prostu upuścić wiodący 0: a = (2016, 4, 3). Zera wiodące mogą być dodawane do reprezentacji łańcuchowej twojej krotki, gdy jest to konieczne, zamiast próbować przechowywać je jawnie.

+1

woooow Dziękuję – robert

+1

okey zrobię to – robert

23

W Pythonie 3, zera na początku nie są dozwolone na liczbach. Np:

05 

Itd nie są dozwolone, ale powinno być napisane jak 5 i 123 zamiast.

W Pythonie 2, jednak jest zero oznacza, że ​​liczba jest liczba ósemkowa (podstawa osiem), tak 04 lub 03 oznaczałoby 4 i 3 w ósemkowej, odpowiednio, ale 08 będzie nieprawidłowe, ponieważ jest nie jest prawidłową liczbą ósemkową.

W Pythonie 3, składnia octals zmieniła się do tego:

0o10 
0o4 

(. Jak również pozwala inne zasady, takie jak binarny i szesnastkowy używając 0b lub 0x prefiksy)

Co do twojego inne pytanie, token w Pythonie to sposób, w jaki interpreter Pythona dzieli twój kod na porcje, aby mógł go zrozumieć (patrz here). Tutaj, kiedy tokenizer próbuje podzielić kod, nie spodziewa się, że zobaczy tam zero i dlatego zgłasza błąd.

Proponuję (podobnie jak w przypadku innych odpowiedzi), aby opuścić wiodące zero ((2016,4,3)) lub reprezentować je za pomocą ciągów (("2016","04","03")).

0

Kiedy zainstalować moduł potem czasami błąd pokazu SyntaxError Nieprawidłowy token następnie użyć następującego polecenia

pip pip zainstalować --upgrade

potem następnie zainstalować moduł za pomocą dwóch poleceń

easy_install package_name

instalacja pip nazwa_pakietu

Powiązane problemy