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

Python处理CSV提取连续序列时报字符串拼接错误及replace异常

问题解决方法

问题1 类型报错修复

原因:从CSV读取的所有内容默认是字符串格式,直接进行算术运算s+1时会触发字符串和整数拼接的类型错误。
解决方法:提取CSV内容后统一转换为整数类型再传入ranges函数。

问题2 字符串冗余修复

原因:

  • 直接将csv.reader返回的行列表整体转字符串拼接,本身就会带出列表自带的[、'等符号,属于完全没必要的冗余操作
  • 循环中的str1.split("]",-1)没有赋值给变量,执行后不会生效
  • 最终分割后的列表会残留空字符串元素,没有过滤
    解决方法:跳过字符串拼接替换的冗余流程,直接从读取的CSV结果里提取数值,简化处理逻辑。

修复后完整代码

import csv

def ranges(nums):
    nums = sorted(set(nums))
    gaps = [[s, e] for s, e in zip(nums, nums[1:]) if s+1 < e]
    edges = iter(nums[:1] + sum(gaps, []) + nums[-1:])
    # 按预期格式返回结果
    return [f"{s},{e}" for s, e in zip(edges, edges)]

# 读取源CSV提取数值
nums = []
with open('Book1.csv', newline='') as f:
    reader = csv.reader(f)
    for row in reader:
        # 跳过空行,将每行数字转整数
        if row and row[0].strip().isdigit():
            nums.append(int(row[0].strip()))

# 生成连续区间结果
result = ranges(nums)
print(result)

# 输出到新CSV文件
with open('output.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    for item in result:
        writer.writerow([item])

使用示例中1、5、6、7、8的输入测试,会直接返回预期的['1,1','5,5','6,8']结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 20:06:06