Mam wyżej wymieniony błąd w s1="some very long string............"
Czy ktoś wie, co robię źle?
Mam wyżej wymieniony błąd w s1="some very long string............"
Czy ktoś wie, co robię źle?
Odpowiedzi:
Nie wstawiasz "
przed końcem linii.
Użyj, """
jeśli chcesz to zrobić:
""" a very long string ......
....that can span multiple lines
"""
Miałem ten problem - w końcu doszedłem do wniosku, że powodem było umieszczenie \
znaków w ciągu. Jeśli masz któryś z nich, „ucieknij” przed nimi \\
i powinno działać dobrze.
r
przed napisem, aby uniknąć powodowania problemów.
(Zakładając, że nie masz / nie chcesz znaków końca linii w swoim ciągu ...)
Jak długi jest ten ciąg?
Podejrzewam, że istnieje ograniczenie co do tego, jak długo może być odczytany wiersz z pliku lub z wiersza poleceń, a ponieważ koniec wiersza jest odcinany, parser widzi coś takiego s1="some very long string..........
(bez zakończenia "
) i w ten sposób zgłasza błąd analizy?
Możesz podzielić długie wiersze na wiele wierszy, unikając podziałów wierszy w źródle w następujący sposób:
s1="some very long string.....\
...\
...."
W mojej sytuacji miałem \r\n
w moim słowniku ciągi znaków w pojedynczych cudzysłowach. Wymieniłem wszystkie wystąpienia \r
ze \\r
i \n
ze \\n
i to naprawić mój problem, właściwie powrocie uciekły podziały wiersza w eval'ed dict.
ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
.....
Miałem podobny problem. Miałem string, który zawierał ścieżkę do folderu w Windows np C:\Users\
. Problem polega na tym, że \
jest to znak ucieczki, więc aby użyć go w łańcuchach, musisz dodać jeszcze jeden \
.
Błędny: C:\Users\
Poprawny: C:\\\Users\\\
Ja też miałem ten problem, chociaż były tutaj odpowiedzi, chciałbym przejść do ważnej kwestii, ponieważ
/
nie powinno być pustych miejsc.
Miałem też dokładnie ten komunikat o błędzie, dla mnie problem został rozwiązany poprzez dodanie znaku „\”
Okazuje się, że w moim długim łańcuchu, podzielonym na około osiem wierszy z „\” na samym końcu, brakowało „\” w jednej linii.
Python IDLE nie określił numeru wiersza, w którym wystąpił ten błąd, ale podświetlił na czerwono całkowicie poprawną instrukcję przypisania zmiennej, wyrzucając mnie. Rzeczywista, zniekształcona instrukcja łańcuchowa (zawierająca wiele wierszy ze znakiem „\”) znajdowała się obok podświetlanej instrukcji. Może to pomoże komuś innemu.
W moim przypadku używam systemu Windows, więc zamiast apostrofów muszę używać podwójnych cudzysłowów.
C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop
Otrzymałem ten błąd w funkcji postgresql. Miałem długi kod SQL, który podzieliłem na wiele wierszy za pomocą \ dla lepszej czytelności. Jednak na tym polegał problem. Usunąłem wszystkie i utworzyłem je w jednej linii, aby rozwiązać problem. Używałem pgadmin III.
W moim przypadku z Mac OS X miałem następujące stwierdzenie:
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
Otrzymałem błąd:
File "<stdin>", line 1
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
^
SyntaxError: EOL while scanning string literal
Po zmianie na:
model.export_srcpkg(platform, toolchain, "mymodel_pkg.zip", "mymodel.dylib")
Zadziałało...
David
Twoje variable(s1)
obejmuje wiele linii. Aby to zrobić (tj. Chcesz, aby Twój ciąg obejmował wiele linii), musisz użyć potrójnych cudzysłowów ("" ").
s1="""some very long
string............"""
Napotkałem ten sam problem podczas uzyskiwania dostępu do dowolnego katalogu na dysku twardym. Potem rozwiązałem to w ten sposób.
import os
os.startfile("D:\folder_name\file_name") #running shortcut
os.startfile("F:") #accessing directory
Powyższy obrazek przedstawia błąd i rozwiązany wynik.