我有一个很长的查询。我想在 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 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 ...'
不需要逗号,只需将要连接在一起的字符串放入一对括号中,并确保考虑任何所需的空格和换行符。
如果您不想要多行字符串但只需要一个长单行字符串,则可以使用括号,只要确保字符串段之间不包含逗号,那么它将是一个元组。
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"