【问题标题】:How to assign a value to a variable when writing the value takes multiple lines (python)写入值需要多行时如何为变量赋值(python)
【发布时间】:2011-03-29 12:02:07
【问题描述】:

我有一个变量 x 我想分配一个很长的字符串。由于字符串很长,我将其拆分为 10 个子字符串。我想做这样的事情:

x =
   'a very long string - part 1'+
   'a very long string - part 2'+
   'a very long string - part 3'+
                ...
   'a very long string - part 10'

但事实证明这是一个无效的语法。什么是有效的语法?

【问题讨论】:

标签: python string variable-assignment


【解决方案1】:

如果你想要一个没有换行符的字符串,你可以

>>> x = (
... 'a very long string - part 1' +
... 'a very long string - part 2' +
... 'a very long string - part 3' )
>>> x
'a very long string - part 1a very long string - part 2a very long string - part 3'
>>> 

+ 运算符对于 string literals 不是必需的:

2.4.2。 字符串文字连接

允许多个相邻的字符串文字(由空格分隔),可能使用不同的引用约定,它们的含义与它们的连接相同。因此,"hello" 'world' 等价于 "helloworld"。此功能可用于减少所需的反斜杠数量,方便地将长字符串拆分为长行,甚至可以将 cmets 添加到部分字符串中,例如:

re.compile("[A-Za-z_]"       # letter or underscore
       "[A-Za-z0-9_]*"   # letter, digit or underscore
      )

你的情况:

>>> x = (
... 'a very long string - part 1' 
... 'a very long string - part 2' 
... 'a very long string - part 3' )
>>> x
'a very long string - part 1a very long string - part 2a very long string - part 3'
>>> 

【讨论】:

    【解决方案2】:

    通常 Python 会发现一行继续到下一行,但如果它没有在每一行的末尾放置反斜杠:

    >>> x = 'a' + \
    ...     'b' + \
    ...     'c'
    >>> x
    'abc'
    

    或者使用括号等标准语法来明确:

    >>> x = ('a' +
    ...      'b' +
    ...      'c')
    >>> x
    'abc'
    

    您可以使用三引号创建一个长字符串 - """ - 但请注意,任何新闻行都将包含在字符串中。

    >>> x = """a very long string part 1
    ... a very long string part 2
    ... a very long string part 3
    ... a very long string part 4"""
    >>> x
    'a very long string part 1\na very long string part 2\na very long string part 3\na very long string part 4'
    

    【讨论】:

    • 谢谢。反斜杠是我一直在寻找的
    • @snakile 我个人尽量避免使用反斜杠(并使用括号() 或类似名称),因为您可以随意添加新行而无需记住`\`。此外,如果您在延续字符之后有任何空格,则会引发错误。
    • 您可以使用\ 转义""" 字符串中的换行符。
    • @Nick T 同意。这就是我接受括号解决方案的原因(但仍然赞成那个解决方案,因为它也很好)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 2018-11-08
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    相关资源
    最近更新 更多