Mam wyżej wymieniony błąd w s1="some very long string............"
Czy ktoś wie, co robię źle?
python
string
string-literals
l --''''''--------- '' '' '' '' '' ''
źródło
źródło
Odpowiedzi:
Nie wstawiasz
"
przed końcem linii.Użyj,
"""
jeśli chcesz to zrobić:źródło
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ódło
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:
źródło
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.źródło
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\\\
źródło
Ja też miałem ten problem, chociaż były tutaj odpowiedzi, chciałbym przejść do ważnej kwestii, ponieważ
/
nie powinno być pustych miejsc.źródło
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.
źródło
W moim przypadku używam systemu Windows, więc zamiast apostrofów muszę używać podwójnych cudzysłowów.
źródło
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.
źródło
W moim przypadku z Mac OS X miałem następujące stwierdzenie:
Otrzymałem błąd:
Po zmianie na:
Zadziałało...
David
źródło
Możesz spróbować tego:
źródło
s = r'long\annoying\path\\'
.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 ("" ").źródło
W takim przypadku sprawdzą się trzy pojedyncze cudzysłowy lub trzy podwójne cudzysłowy! Na przykład:
LUB
źródło
Większość poprzednich odpowiedzi jest poprawnych, a moja odpowiedź jest bardzo podobna do aaronasterling, możesz też zrobić 3 pojedyncze cudzysłowy s1 = '' 'jakiś bardzo długi ciąg ............' ''
źródło
Napotkałem ten sam problem podczas uzyskiwania dostępu do dowolnego katalogu na dysku twardym. Potem rozwiązałem to w ten sposób.
Powyższy obrazek przedstawia błąd i rozwiązany wynik.
źródło