J'ai l'erreur mentionnée ci-dessus dans s1="some very long string............"
Quelqu'un sait-il ce que je fais mal?
J'ai l'erreur mentionnée ci-dessus dans s1="some very long string............"
Quelqu'un sait-il ce que je fais mal?
Réponses:
Vous ne mettez pas un "
avant la fin de la ligne.
Utilisez """
si vous souhaitez faire ceci:
""" a very long string ......
....that can span multiple lines
"""
J'ai eu ce problème - j'ai finalement compris que la raison était que j'avais inclus des \
caractères dans la chaîne. Si vous en avez, «échappez-les» avec \\
et cela devrait fonctionner correctement.
r
avant la chaîne pour éviter qu'ils ne causent des problèmes.
(En supposant que vous n'avez pas / voulez des sauts de ligne dans votre chaîne ...)
Quelle est la longueur réelle de cette chaîne?
Je soupçonne qu'il y a une limite à la longueur d'une ligne lue à partir d'un fichier ou de la ligne de commande, et parce que la fin de la ligne est coupée, l'analyseur voit quelque chose comme s1="some very long string..........
(sans fin "
) et lance ainsi une erreur d'analyse?
Vous pouvez diviser les longues lignes en plusieurs lignes en échappant les sauts de ligne dans votre source comme ceci:
s1="some very long string.....\
...\
...."
Dans ma situation, j'avais \r\n
dans mes chaînes de dictionnaire à guillemets simples. J'ai remplacé toutes les instances de \r
with \\r
et \n
with \\n
et cela a résolu mon problème, renvoyant correctement les sauts de ligne échappés dans le dict évalué.
ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
.....
J'ai fait face à un problème similaire. J'avais une chaîne qui contenait le chemin vers un dossier dans Windows, par exemple C:\Users\
Le problème est qu'il \
s'agit d'un caractère d'échappement et donc, pour l'utiliser dans des chaînes, vous devez en ajouter un de plus \
.
Incorrect: C:\Users\
Correct: C:\\\Users\\\
J'ai aussi eu ce problème, bien qu'il y ait eu des réponses ici, je veux à un point important à ce sujet après
/
qu'il ne devrait pas y avoir d'espaces vides.
J'ai également eu ce message d'erreur exact, pour moi le problème a été résolu en ajoutant un "\"
Il s'avère que ma longue chaîne, divisée en huit lignes environ avec "\" à la toute fin, manquait un "\" sur une ligne.
Python IDLE n'a pas spécifié de numéro de ligne sur lequel cette erreur se trouvait, mais il a mis en évidence en rouge une instruction d'affectation de variable totalement correcte, ce qui m'a déstabilisé. L'instruction de chaîne déformée réelle (plusieurs lignes avec "\") était adjacente à l'instruction en surbrillance. Peut-être que cela aidera quelqu'un d'autre.
Dans mon cas, j'utilise Windows donc je dois utiliser des guillemets doubles au lieu de simples.
C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop
J'obtenais cette erreur dans la fonction postgresql. J'avais un long SQL que j'ai divisé en plusieurs lignes avec \ pour une meilleure lisibilité. Cependant, c'était le problème. J'ai tout supprimé et les ai créés en une seule ligne pour résoudre le problème. J'utilisais pgadmin III.
Dans mon cas avec Mac OS X, j'avais la déclaration suivante:
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
J'obtenais l'erreur:
File "<stdin>", line 1
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
^
SyntaxError: EOL while scanning string literal
Après avoir changé pour:
model.export_srcpkg(platform, toolchain, "mymodel_pkg.zip", "mymodel.dylib")
Ça a marché...
David
Votre variable(s1)
s'étend sur plusieurs lignes. Pour ce faire (c'est-à-dire que vous voulez que votre chaîne s'étende sur plusieurs lignes), vous devez utiliser des guillemets triples ("" ").
s1="""some very long
string............"""
J'avais rencontré le même problème lors de l'accès à n'importe quel répertoire de disque dur. Ensuite, je l'ai résolu de cette façon.
import os
os.startfile("D:\folder_name\file_name") #running shortcut
os.startfile("F:") #accessing directory
L'image ci-dessus montre une erreur et une sortie résolue.