Python:优雅的多行字符串格式

Python:优雅的多行字符串格式,python,string,string-formatting,Python,String,String Formatting,我正在使用一个数据库接口,该接口将查询字符串作为\uuu getitem\uuuuuuuu()方法的键参数。但对于可读性不强的复杂查询: e = db["(col1 in ['ABC', 'DEF', 'GHI']) & ((col2 != {}) & (col3 != {})) & (col4 == 'something')".format(-some_value-1, -another_value-1)] 目前我正在使用以下工具: e = db[" & ".

我正在使用一个数据库接口,该接口将查询字符串作为
\uuu getitem\uuuuuuuu()
方法的
参数。但对于可读性不强的复杂查询:

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 != {}) & ".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 != {}) & ".format(-some_value-1) +
       "(col3 != {})) & ".format(-another_value-1) +
       "(col4 == 'something')"]

看看这是否看起来像面糊以防万一:)


看看这是否看起来像面糊以防万一:)


看看这是否看起来像面糊以防万一:)


看看这是否看起来像面糊以防万一:)

这与您的解决方案类似,但在两个方面有所不同:

  • 最后是
    格式
    ,因此在不中断的情况下更容易读取前四行
  • 我使用了命名替换(
    {col2\u neq}
    {col3\u neq}
    而不是两个
    {}
    ),以便最后一行是可读的
  • 这与您的解决方案类似,但在两个方面有所不同:

  • 最后是
    格式
    ,因此在不中断的情况下更容易读取前四行
  • 我使用了命名替换(
    {col2\u neq}
    {col3\u neq}
    而不是两个
    {}
    ),以便最后一行是可读的
  • 这与您的解决方案类似,但在两个方面有所不同:

  • 最后是
    格式
    ,因此在不中断的情况下更容易读取前四行
  • 我使用了命名替换(
    {col2\u neq}
    {col3\u neq}
    而不是两个
    {}
    ),以便最后一行是可读的
  • 这与您的解决方案类似,但在两个方面有所不同:

  • 最后是
    格式
    ,因此在不中断的情况下更容易读取前四行
  • 我使用了命名替换(
    {col2\u neq}
    {col3\u neq}
    而不是两个
    {}
    ),以便最后一行是可读的

  • 连接时,将使用
    a&b
    而不是
    a&b
    。您应该在第一个和第三个“与”符号前添加一个空格。您认为数据库会在意吗?这是一个关于ALL后的优雅度的问题,代码更优雅,没有无用的空格。当您连接时,您将拥有
    a&b
    ,而不是
    a&b
    。您应该在第一个和第三个“与”符号前添加一个空格。您认为数据库会在意吗?这是一个关于ALL后的优雅度的问题,代码更优雅,没有无用的空格。当您连接时,您将拥有
    a&b
    ,而不是
    a&b
    。您应该在第一个和第三个“与”符号前添加一个空格。您认为数据库会在意吗?这是一个关于ALL后的优雅度的问题,代码更优雅,没有无用的空格。当您连接时,您将拥有
    a&b
    ,而不是
    a&b
    。你应该在第一个和第三个符号前加一个空格。你认为数据库会在意吗?这是一个关于ALL后的优雅的问题,代码更优雅,没有无用的空格。