Python解析RSS feed数据到CSV时薪资字段显示异常的解决求助
解决薪资数据显示问题的方案
问题根源
- 类型不匹配导致判断失效:你判断
salary_from == 0时,salary_from大概率是字符串类型(比如从RSS解析出的"0.0000"),和数字0永远不相等,所以所有情况都触发else分支显示"Unknown"。 - 切片逻辑的局限性:用
[:-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
相关产品推荐
相关产品推荐

