【问题标题】:why a conditional_expressions inside an f-string is rendered as a syntax error为什么 f-string 中的 conditional_expressions 被呈现为语法错误
【发布时间】:2021-09-11 17:47:13
【问题描述】:

我正在尝试从 PySimpleGUI 字段中的值编译 SQL 更新查询。我正在使用串联的 f 字符串来执行此操作。

如果任何字段为空白,则必须将“DEFAULT”替换为值。为此,我尝试使用条件表达式,例如:

update_cust_qry = "UPDATE `d_base`.`Customers` SET " +\
f"Contact = '{'DEFAULT' if values['_CONTACT_'] = '' else values['_CONTACT_']}'," + \
f"WHERE Customer = '{values['_CUSTOMERS_'][0]}'"

不幸的是,Python-3 将这样的构造声明为语法错误。

你能告诉我一个正确的方法吗?

非常感谢

梅尔

【问题讨论】:

    标签: python-3.x conditional-operator pysimplegui f-string


    【解决方案1】:

    您的代码中有一个小错误:您在if 条件中使用了= 而不是==。我用 values 容器的推断结构尝试了相同的构造,但没有出现语法错误,因此错误出在逻辑上,而不是 f 字符串。

    values = {'_CONTACT_': "", '_CUSTOMERS_': [1,2,3]}
    str = f"Contact = '{'DEFAULT' if values['_CONTACT_'] == '' else values['_CONTACT_']}'," + \
        f"WHERE Customer = '{values['_CUSTOMERS_'][0]}'"
    print(str)
    

    输出:

    Contact = 'DEFAULT',WHERE Customer = '1' 
    

    现在我试试:values = {'_CONTACT_': "test", '_CUSTOMERS_': [4]}

    输出:

    Contact = 'test',WHERE Customer = '4'
    

    【讨论】:

      猜你喜欢
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多