python: SyntaxError: EOL tijdens scannen letterlijke tekenreeks

Ik heb de bovengenoemde fout in s1="some very long string............"

Weet iemand wat ik verkeerd doe?


Antwoord 1, autoriteit 100%

Je zet geen "voor het einde van de regel.

Gebruik """als je dit wilt doen:

""" a very long string ...... 
....that can span multiple lines
"""

Antwoord 2, autoriteit 41%

Ik had dit probleem – ik kwam er uiteindelijk achter dat de reden was dat ik \tekens in de tekenreeks had opgenomen. Als je een van deze hebt, “ontsnap” ze met \\en het zou goed moeten werken.


Antwoord 3, autoriteit 7%

(Ervan uitgaande dat je geen regeleindes in je string hebt/wilt…)

Hoe lang is deze string eigenlijk?

Ik vermoed dat er een limiet is aan hoe lang een regel die uit een bestand of vanaf de opdrachtregel wordt gelezen kan zijn, en omdat het einde van de regel wordt afgesneden, ziet de parser iets als s1="some very long string..........(zonder einde ") en geeft dus een parseerfout?

Je kunt lange regels opsplitsen in meerdere regels door regeleinden in je bron als volgt te escapen:

s1="some very long string.....\
...\
...."

Antwoord 4, autoriteit 4%

In mijn situatie had ik \r\nin mijn enkelvoudig geciteerde woordenboekreeksen. Ik heb alle instanties van \rvervangen door \\ren \ndoor \\nen het loste mijn probleem, waarbij escaped-regeleinden correct worden geretourneerd in het beoordeelde dict.

ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
  .....

Antwoord 5, autoriteit 3%

Ik had een soortgelijk probleem. Ik had een string die een pad naar een map in Windows bevatte, b.v. C:\Users\Het probleem is dat \een escape-teken is en dus om het in strings te gebruiken moet je nog een \.

Onjuist: C:\Users\

Correct: C:\\\Users\\\


Antwoord 6, autoriteit 2%

Je kunt dit proberen:

s = r'long\annoying\path'

Antwoord 7, autoriteit 2%

Ook ik had dit probleem, hoewel er hier antwoorden waren, wil ik hier een belangrijk punt op maken
na
/er mogen geen lege spaties zijn.Let erop


Antwoord 8

Ik had ook exact deze foutmelding, voor mij werd het probleem opgelost door een ” \”

. toe te voegen

Het bleek dat mijn lange reeks, opgedeeld in ongeveer acht regels met ” \” helemaal aan het einde, een ” \” op één regel miste.

Python IDLE heeft geen regelnummer gespecificeerd waarop deze fout zich voordeed, maar het markeerde rood een volledig correcte variabele toewijzingsinstructie, waardoor ik er vandoor ging. De eigenlijke misvormde tekenreeksinstructie (meerdere regels lang met ” \”) bevond zich naast de gemarkeerde instructie. Misschien helpt dit iemand anders.


Antwoord 9

In mijn geval gebruik ik Windows, dus ik moet dubbele aanhalingstekens gebruiken in plaats van enkele.

C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop

Antwoord 10

In mijn geval met Mac OS X had ik de volgende verklaring:

model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)

Ik kreeg de foutmelding:

 File "<stdin>", line 1
model.export_srcpkg(platform, toolchain, 'mymodel_pkg.zip', 'mymodel.dylib’)
                                                                             ^
SyntaxError: EOL while scanning string literal

Nadat ik heb gewijzigd naar:

model.export_srcpkg(platform, toolchain, "mymodel_pkg.zip", "mymodel.dylib")

Het werkte …

DAVID


Antwoord 11

Ik kreeg deze foutmelding in PostgreSQL-functie. Ik had een lange SQL die ik in meerdere regels brak met \ voor een betere leesbaarheid. Dat was echter het probleem. Ik heb alles verwijderd en maakte ze in één regel om het probleem op te lossen. Ik gebruik PGADMIN III.


Antwoord 12

In mijn geval ben ik (‘of’) aan het einde van de reeks vergeten. EG ‘ABC’ of “ABC”


Antwoord 13

Uw variable(s1)overspant meerdere regels. Om dit te doen (I.E wil je string om meerdere regels te spanelen), moet je Triple Quotes (“” “) gebruiken.

s1="""some very long 
string............"""

Antwoord 14

In dit geval zullen drie enkele offertes of drie dubbele offertes beide werken!
Bijvoorbeeld:

   """Parameters:
    ...Type something.....
    .....finishing statement"""

of

   '''Parameters:
    ...Type something.....
    .....finishing statement'''

Antwoord 15

Ik had voor hetzelfde probleem geconfronteerd tijdens de toegang tot elke harde schijfmap.
Toen heb ik het op deze manier opgelost.

import os
 os.startfile("D:\folder_name\file_name") #running shortcut
 os.startfile("F:") #accessing directory

De afbeelding hierboven toont een fout en opgeloste uitvoer.


Antwoord 16

De meeste eerdere antwoorden zijn correct en mijn antwoord lijkt erg op aaronasterling, je zou ook 3 enkele aanhalingstekens kunnen doen
s1=”’een heel lange string…………”’


Antwoord 17

Alle onderstaande code is getest met Python 3.8.3


Het eenvoudigst — gebruik gewoon drievoudige aanhalingstekens.

Een van beide singles:

long_string = '''some
very 
long
string
............'''

of dubbel:

long_string = """some
very 
long
string
............"""

Opmerking:tekenreeksen tussen drie aanhalingstekens behouden de inspringing, dit betekent dat

long_string = """some
    very 
    long
string
............"""

en

long_string = """some
    very 
long
string
............"""

of zelfs gewoon

long_string = """
some
very 
long
string
............"""

zijn niet hetzelfde.

Er is een textwrap.dedentfunctie in standaard bibliotheek om hiermee om te gaan, hoewel ermee werkt, is het bereik van de vraag.


Gebruik ook, gebruik \nin een string, wonende op enkele regel:

long_string = "some \nvery \nlong \nstring \n............"

Ook, als u geen linefeds (d.w.z. newlines) in uw string nodig hebt, kunt u \binnen reguliere string gebruiken:

long_string = "some \
very \
long \
string \
............"

Other episodes