Pythonic方法创建一个长的多行字符串

  • 问题:
  • 我有一个很长的问题。我想用Python把它分成几行。在JavaScript中实现这一点的一种方法是使用多个句子并使用+运算符将它们连接起来(我知道,也许这不是最有效的方法,但我并不真正关心这个阶段的性能,只关心代码的可读性)。示例:

    var long_string = 'some text not important. just garbage to' +
    'illustrate my example';

    我尝试在Python中做一些类似的事情,但是没有成功,所以我使用\分割长字符串。然而,我不确定这是否是唯一/最好/最好的方式。看起来很尴尬。

    query = 'SELECT action.descr as "action", '\
    'role.id as role_id,'\
    'role.descr as role'\
    'FROM '\
    'public.role_action_def,'\
    'public.role,'\
    'public.record_def, '\
    'public.action'\
    'WHERE role.id = role_action_def.role_id AND'\
    'record_def.id = role_action_def.def_id AND'\
    'action.id = role_action_def.action_id AND'\
    'role_action_def.account_id = ' + account_id + ' AND'\
    'record_def.account_id=' + account_id + ' AND'\
    'def_id=' + def_id

  • 答案:
  • 你说的是多线弦吗?简单,用三重引号开始和结束

    s = """ this is a very
    long string if I had the
    energy to type more and more ..."""

    您也可以使用单引号(当然在开头和结尾有3个引号),并像对待其他字符串一样对待结果字符串s

    注意:与任何字符串一样,起始引号和结束引号之间的任何内容都成为字符串的一部分,因此本例有一个前导空格(如@root45所指出)。此字符串还将包含空格和换行符

    一、 e.,:

    ' this is a very\n        long string if I had the\n        energy to type more and more ...'

    最后,还可以使用Python构造长线,如下所示:

     s = ("this is a very"
    "long string too"
    "for sure ..."
    )

    其中包括任何额外的空格或换行符(这是一个经过深思熟虑的示例,说明跳过空格会产生什么效果):

    'this is a verylong string toofor sure ...'

    不需要逗号,只需将要连接的字符串放入一对括号中,并确保考虑到所需的空格和换行符