我有上述错误s1="一些很长的字符串............"

有人知道我哪里做错了吗?


当前回答

下面的所有代码都是用Python 3.8.3测试的


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

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

或双:

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

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

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

and

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 \
............"

其他回答

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

变量(s1)跨越多行。为了做到这一点(即你想要你的字符串跨越多行),你必须使用三引号(""")。

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

我遇到了这个问题——我最终发现原因是我在字符串中包含了\字符。如果你有任何这些,“转义”他们与\\,它应该工作正常。

(假设你没有/不想在你的字符串中换行…)

这个字符串到底有多长?

我怀疑从文件或命令行读取一行的长度是有限制的,因为行尾被截断,解析器会看到类似s1="一些非常长的字符串..........(没有结尾),从而抛出解析错误?

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

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

你可以试试这个:

s = r'long\annoying\path'