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指出的那样)。 该字符串还将包含空白和换行符。

IE中:

' this is a veryn        long string if I had then        energy to type more and more ...'

最后,还可以像这样在Python中构建长行:

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

这将包括任何额外的空白或换行符(这是一个故意的例子,显示了跳过空白的效果):

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

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


如果你不想要一个多行字符串,但只需要一个很长的单行字符串,你可以使用圆括号,只要确保在字符串段之间不包含逗号,那么它就是一个元组。

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)

在你正在构建的SQL语句中,多行字符串也可以。 但是,如果多行字符串包含的额外空格将会成为问题,那么这将是实现您想要的一个好方法。


打破线为我工作。 这里是一个例子:

longStr = "This is a very long string " 
        "that I wrote to help somebody " 
        "who had a question about " 
        "writing long strings in Python"
链接地址: http://www.djcxy.com/p/18489.html

上一篇: Pythonic way to create a long multi

下一篇: Convert UTC Epoch to local date