[英]Python: elegant multi-line string formatting
我正在使用将查询字符串作为__getitem__()
方法的key
参数的数据库接口。 对于不是很可读的复杂查询:
e = db["(col1 in ['ABC', 'DEF', 'GHI']) & ((col2 != {}) & (col3 != {})) & (col4 == 'something')".format(-some_value-1, -another_value-1)]
目前,我正在使用以下内容:
e = db[" & ".join([
"(col1 in ['ABC', 'DEF', 'GHI'])",
"((col2 != {})".format(-some_value-1),
" (col3 != {}))".format(-another_value-1),
"(col4 == 'something')"
])]
我正在寻找一种格式化这种多行字符串的更优雅(阅读:更容易阅读)的方法。 有什么建议么?
我认为这更具可读性。
e = db["(col1 in ['ABC', 'DEF', 'GHI']) & " +
"((col2 != {}) & ".format(-some_value-1) +
"(col3 != {})) & ".format(-another_value-1) +
"(col4 == 'something')"]
看看这是否连连看以防万一:)
e = db[
"""
(col1 in ['ABC', 'DEF', 'GHI'])
& ((col2 != {}) & (col3 != {}))
& (col4 == 'something')
""".format(-some_value-1, -another_value-1)
]
e = db["(col1 in ['ABC', 'DEF', 'GHI'])" +
"& ((col2 != {}) & (col3 != {}))".format(-some_value-1, -another_value-1) +
"& (col4 == 'something')"]
db[" & ".join(("(col1 in ['ABC', 'DEF', 'GHI'])",
"((col2 != {col2_neq})",
"(col3 != {col3_neq}))",
"(col4 == 'something')"
)).format(col2_neq=-some_value-1, col3_neq=-another_value-1)]
这类似于您的解决方案,但在两个方面有所不同:
format
在最后,因此更容易阅读前四行而不会中断。 {col2_neq}
和{col3_neq}
而不是两个{}
)来使最后一行可读。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.