python: Sözdizimi Hatası: Dize değişmezini tararken EOL


Yanıtlar:


224

"Çizginin sonundan önce a koymazsınız.

"""Bunu yapmak istiyorsanız kullanın :

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

18
Ve sadece üç tırnak işareti kullanmaya dikkat ettim, kazayla dört tane aldım ve hata ortaya çıktı
Oregano

1
Dizeleri ve değişkenleri birleştirmeye ne dersiniz?
Daniel Springer

92

Bu sorun vardı - sonunda neden \dize karakterler dahil olmasıydı çalıştım . Bunlardan herhangi biri varsa, onlarla "kaçmak" \\ve iyi çalışmalıdır.


2
@Leo'ya 'kaçış karakterleri' denir ve bu oldukça standarttır. rSoruna neden olmalarını önlemek için dizeden önce bir koyabilirsiniz .
eric

17

(Dizenizde satır sonları olmadığını / istemediğinizi varsayarsak ...)

Bu ip gerçekten ne kadar sürüyor?

Bir dosyadan veya komut satırından okunan bir satırın ne kadar uzun olabileceğine dair bir sınır olduğundan şüpheleniyorum ve satırın sonu kesildiği için ayrıştırıcı s1="some very long string..........(bitiş olmadan ") gibi bir şey görüyor ve böylece bir ayrıştırma hatası atıyor mu?

Kaynağınızda aşağıdaki gibi çizgi satırlarından kaçarak uzun satırları birden çok satıra bölebilirsiniz:

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

8

Benim durumumda, \r\ntek tırnaklı sözlük dizelerim vardı. Ben tüm örneklerini yerini \rile \\rve \nile \\nve düzgün eval'ed dict kaçan satır sonları dönen, sorunumu sabit.

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

6

Benzer bir sorunla karşılaştım. Windows'da bir klasöre yol içeren bir dize vardı örneğin C:\Users\Sorun bu \bir kaçış karakteri ve böylece dizelerde kullanmak için bir tane daha eklemeniz gerekir \.

Yanlış: C:\Users\

Doğru: C:\\\Users\\\


4

Ben de bu sorunu yaşadım, burada cevaplar olmasına rağmen /boş alanlar olmamasından sonra bunun önemli bir noktasını istiyorum.


2

Ayrıca bu tam hata mesajını aldım, benim için sorun bir "\" ekleyerek düzeltildi

En sonunda "\" ile yaklaşık sekiz satıra bölünmüş uzun dizemin bir satırda "\" eksik olduğu ortaya çıkıyor.

Python IDLE, bu hatanın açık olduğu bir satır numarası belirtmedi, ancak beni atarak tamamen doğru bir değişken atama ifadesini kırmızı renkte vurguladı. Gerçek biçimsiz dize ifadesi ("\" ile uzun satırlar), vurgulanan ifadeye bitişikti. Belki bu başka birine yardım eder.


2

Benim durumumda, Windows'u kullanıyorum, bu yüzden tek yerine çift tırnak kullanmak zorundayım.

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

2

Postgresql işlevinde bu hatayı alıyordum. Ben daha iyi okunabilirlik için \ ile birden çok satır kırdı uzun bir SQL vardı. Ancak sorun buydu. Hepsini kaldırdım ve sorunu gidermek için tek bir satırda yaptım. Ben pgadmin III kullanıyordum.


2

Mac OS X ile ilgili durumumda, aşağıdaki ifadeyi aldım:

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

Hata alıyordum:

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

Ben değiştirdikten sonra:

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

İşe yaradı...

David


2

Bunu deneyebilirsiniz:

s = r'long\annoying\path'

1
Bu en iyi cevap. Ayrıca deneyebilirsiniz s = r'long\annoying\path\\'.
shahar_m

1

Kişisel variable(s1)açıklıklı çoklu çizgiler. Bunu yapmak için (yani dizenizin birden çok satıra yayılmasını istiyorsanız) üçlü tırnak ("" ") kullanmanız gerekir.

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

1

Bu durumda, üç tek tırnak veya üç çift tırnak işe yarayacaktır! Örneğin:

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

VEYA

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

0

Önceki cevapların çoğu doğrudur ve cevabım aaronasterling'e çok benzer, ayrıca 3 tek alıntı da yapabilirsiniz s1 = '' 'bazı çok uzun dize ............' ''


0

Herhangi bir sabit disk dizinine erişirken de aynı sorunla karşılaşmıştım. Sonra bu şekilde çözdüm.

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

resim açıklamasını buraya girin

Yukarıdaki resimde bir hata ve çözülmüş çıktı gösterilmektedir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.