一尘不染

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

javascript

我有一个很长的查询。我想在 Python 中将它分成几行。在 JavaScript 中执行此操作的一种方法是使用多个句子并将它们与+运算符连接(我知道,也许这不是最有效的方法,但我并不真正关心现阶段的性能,只是代码可读性) . 例子:

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

我尝试在 Python 中做类似的事情,但没有奏效,所以我习惯于\拆分长字符串。但是,我不确定这是否是唯一/最好/pythonicest 的方法。看起来很尴尬。实际代码:

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

阅读 135

收藏
2022-02-18

共2个答案

一尘不染

你说的是多行字符串吗?很简单,使用三引号来开始和结束它们。

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

您也可以使用单引号(其中 3 个当然在开始和结束处)并将生成的字符串s与任何其他字符串一样对待。

注意:就像任何字符串一样,开始和结束引号之间的任何内容都会成为字符串的一部分,所以这个例子有一个前导空格。此字符串还将包含空格和换行符。

IE,:

' 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 ...'

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

2022-02-18
一尘不染

断线\对我有用。这是一个例子:

longStr = "This is a very long string " \
        "that I wrote to help somebody " \
        "who had a question about " \
2022-02-18