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

Python解析RSS feed数据到CSV时薪资字段显示异常的解决求助

解决薪资数据显示问题的方案

问题根源

  1. 类型不匹配导致判断失效:你判断salary_from == 0时,salary_from大概率是字符串类型(比如从RSS解析出的"0.0000"),和数字0永远不相等,所以所有情况都触发else分支显示"Unknown"。
  2. 切片逻辑的局限性:用[:-5]截取字符串仅适用于固定格式的四位小数字符串,遇到"0.0000"时会截成空字符串,导致拼接出无效的" to "。

可行解决方案

根据salary_from和salary_to的实际类型,选择对应的处理方式:

场景1:薪资是字符串类型(如"35000.0000"、"0.0000")

直接判断字符串内容,再处理格式:

# 处理薪资显示逻辑
if salary_from == "0.0000" or salary_to == "0.0000":
    salary_str = "Unknown"
else:
    salary_str = f"{salary_from[:-5]} to {salary_to[:-5]}"

# 加入数据列表
feed_data.append(
    [
        title,
        published_date,
        summary,
        location,
        application_email,
        company,
        company_website,
        salary_str,
    ]
)

场景2:薪资是浮点数类型(如35000.0、0.0)

转成整数格式化更稳妥,避免字符串切片的局限性:

# 处理薪资显示逻辑
if salary_from == 0.0 or salary_to == 0.0:
    salary_str = "Unknown"
else:
    salary_str = f"{int(salary_from)} to {int(salary_to)}"

# 加入数据列表
feed_data.append(
    [
        title,
        published_date,
        summary,
        location,
        application_email,
        company,
        company_website,
        salary_str,
    ]
)

额外提示

如果RSS返回的薪资格式可能变化(比如小数位数不固定),优先用数值转换的方式处理,比字符串切片更健壮——先把字符串转成浮点数,再转整数,再判断是否为0:

try:
    salary_from_num = float(salary_from)
    salary_to_num = float(salary_to)
except ValueError:
    # 处理无法转成数值的异常情况
    salary_str = "Unknown"
else:
    if salary_from_num == 0.0 or salary_to_num == 0.0:
        salary_str = "Unknown"
    else:
        salary_str = f"{int(salary_from_num)} to {int(salary_to_num)}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 11:57:24