199

我有上述错误s1="some very long string............"

有谁知道我做错了什么?

4

17 回答 17

265

你没有"在行尾之前放一个。

"""如果您想这样做,请使用:

""" a very long string ...... 
....that can span multiple lines
"""
于 2010-08-24T23:07:50.030 回答
113

我遇到了这个问题——我最终发现原因是我\在字符串中包含了字符。如果您有其中任何一个,请使用它们“逃脱”它们,\\它应该可以正常工作。

于 2011-02-28T11:52:19.463 回答
18

(假设您的字符串中没有/想要换行符......)

这个字符串到底有多长?

我怀疑从文件或命令行读取的行的长度是有限制的,并且由于行的末尾被切断,解析器会看到类似s1="some very long string..........(没有结尾")的东西,因此会引发解析错误?

您可以通过转义源代码中的换行符来将长行拆分为多行,如下所示:

s1="some very long string.....\
...\
...."
于 2010-08-24T23:36:10.123 回答
12

在我的情况下,我\r\n的单引号字典字符串中有。\r我替换了with\\r\nwith的所有实例,\\n它解决了我的问题,在 eval'ed dict 中正确返回了转义的换行符。

ast.literal_eval(my_str.replace('\r','\\r').replace('\n','\\n'))
  .....
于 2014-10-23T20:53:16.620 回答
8

我遇到了类似的问题。我有一个字符串,其中包含 Windows 中文件夹的路径,例如C:\Users\问题是它\是一个转义字符,因此为了在字符串中使用它,您需要再添加一个\

不正确:C:\Users\

正确的: C:\\\Users\\\

于 2015-12-31T09:18:14.147 回答
6

你可以试试这个:

s = r'long\annoying\path'
于 2019-11-03T14:53:24.243 回答
5

/我也有这个问题,虽然这里有答案,但在不应该有空格之后我想强调一点 。注意它

于 2013-08-17T06:56:21.573 回答
4

我也有这个确切的错误消息,对我来说,问题是通过添加“\”来解决的

事实证明,我的长字符串,分成大约八行,最后带有“\”,其中一行缺少一个“\”。

Python IDLE 没有指定此错误所在的行号,但它以红色突出显示了一个完全正确的变量赋值语句,让我失望。实际畸形的字符串语句(多行带有“\”)与突出显示的语句相邻。也许这会帮助别人。

于 2013-08-15T15:25:58.823 回答
4

就我而言,我使用 Windows,所以我必须使用双引号而不是单引号。

C:\Users\Dr. Printer>python -mtimeit -s"a = 0"
100000000 loops, best of 3: 0.011 usec per loop
于 2016-09-08T23:18:37.823 回答
4

在我使用 Mac OS X 的情况下,我有以下声明:

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

我收到了错误:

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

在我更改为:

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

有效...

大卫

于 2018-08-03T04:56:52.747 回答
3

我在 postgresql 函数中遇到了这个错误。我有一个很长的 SQL,为了更好的可读性,我用 \ 分成了多行。然而,这就是问题所在。我删除了所有内容并将它们放在一行中以解决问题。我正在使用 pgadmin III。

于 2018-01-29T12:05:49.003 回答
3

就我而言,我忘记了字符串末尾的(' 或 ") 。例如 'ABC'"ABC"

于 2021-01-04T07:45:25.007 回答
2

variable(s1)跨越多行。为了做到这一点(即你希望你的字符串跨越多行),你必须使用三引号(“”“)。

s1="""some very long 
string............"""
于 2018-10-13T06:11:26.933 回答
1

在这种情况下,三个单引号或三个双引号都可以!例如:

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

或者

    '''Parameters:
    ...Type something.....
    .....finishing statement'''
于 2020-03-24T16:00:28.137 回答
1

我在访问任何硬盘目录时都遇到了同样的问题。然后我就这样解决了。

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

在此处输入图像描述

上图显示了错误和已解决的输出。

于 2020-04-23T02:26:30.243 回答
0

大多数以前的答案都是正确的,我的答案与 aaronasterling 非常相似,你也可以做 3 个单引号 s1='''一些很长的字符串............'''

于 2019-11-27T23:16:36.767 回答
0

以下所有代码均使用 Python 3.8.3 进行了测试


最简单的——只需使用三引号。
单人:

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

或双:

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

注意:三引号字符串保留缩进,这意味着

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

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

甚至只是

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

不一样
标准库中有一个textwrap.dedent函数可以处理这个问题,尽管使用它超出了问题的范围。


您也可以\n在字符串中使用,驻留在单行:

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

此外,如果您的字符串中不需要任何换行符(即换行符),您可以\在常规字符串中使用:

long_string = "some \
very \
long \
string \
............"
于 2020-12-10T11:26:05.870 回答