You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中如何将循环输出存储为字符串并生成指定逻辑查询语句

修改Python代码生成指定格式的逻辑查询字符串

问题说明

需要生成格式为 ("java developer" OR "software developer") AND (angular) AND (core OR j2ee) 的逻辑查询字符串,原代码存在以下问题:

  • 错误将多词职位拆分为单个单词进行OR连接
  • 未给多词短语添加引号
  • 存在未定义变量d的语法错误
  • 三个逻辑块未用AND拼接,而是单独输出

修改后的代码

def build_or_block(items):
    # 清理输入项,去除前后空格
    cleaned_items = [item.strip() for item in items]
    if len(cleaned_items) == 1:
        # 单个项直接包裹括号,不加引号
        return f'({cleaned_items[0]})'
    else:
        # 多个项添加引号后用OR连接,再包裹括号
        quoted_items = [f'"{item}"' for item in cleaned_items]
        return f'({" OR ".join(quoted_items)})'

# 获取用户输入,用逗号分隔不同选项(支持带空格的短语)
job_titles = input("Enter job titles (用逗号分隔多个选项): ").split(',')
primary_skills = input("Enter primary skills (用逗号分隔多个选项): ").split(',')
secondary_skills = input("Enter secondary skills (用逗号分隔多个选项): ").split(',')

# 生成三个逻辑块
block_job = build_or_block(job_titles)
block_primary = build_or_block(primary_skills)
block_secondary = build_or_block(secondary_skills)

# 用AND拼接所有块并输出
final_query = " AND ".join([block_job, block_primary, block_secondary])
print(final_query)

测试示例

输入:

Enter job titles (用逗号分隔多个选项): java developer, software developer
Enter primary skills (用逗号分隔多个选项): angular
Enter secondary skills (用逗号分隔多个选项): core, j2ee

输出:

("java developer" OR "software developer") AND (angular) AND ("core" OR "j2ee")

关键改进点

  • 新增通用函数build_or_block,统一处理单个/多个选项的OR块生成逻辑
  • 改用逗号分隔输入选项,避免多词短语被错误拆分
  • 自动为多个选项的短语添加引号,单个选项保持无引号格式
  • 用AND拼接三个逻辑块,生成符合预期的完整查询字符串

内容的提问来源于stack exchange,提问作者nagendrababu banala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 09:27:27