无需pandas/csv库实现读取CSV字符串并过滤含NULL的缺陷行
无第三方依赖的CSV过滤函数实现
实现思路
- 拆分输入字符串的换行符,分离表头与数据行
- 逐行按逗号拆分字段,逐字段检查是否存在全大写
NULL值 - 仅保留无
NULL的合法行,返回格式可根据需要调整,对齐原pandas实现的输出逻辑
代码实现
def filter_csv(csv_str): # 拆分所有行,自动过滤空行 lines = [line.strip() for line in csv_str.splitlines() if line.strip()] if not lines: return [] # 提取表头 headers = lines[0].split(',') valid_rows = [] # 遍历处理所有数据行 for line in lines[1:]: fields = line.split(',') # 存在NULL直接跳过当前行 if 'NULL' in fields: continue # 此处默认返回字典格式(字段名映射值,和pandas输出使用逻辑对齐) valid_rows.append(dict(zip(headers, fields))) # 如果需要返回「表头+二维数组」格式,替换上方append逻辑为下方代码即可 # valid_rows.append(fields) # 最终返回时加上 return [headers] + valid_rows return valid_rows
注:当前实现适配无转义字符、无引号包裹含逗号字段的简单CSV场景,如有复杂CSV格式需求可自行扩展字段拆分逻辑。
测试验证
使用示例输入测试:
test_input = "id,name,age,score\n1,Jack,NULL,12\n17,Betty,28,11" print(filter_csv(test_input))
输出结果:[{'id': '17', 'name': 'Betty', 'age': '28', 'score': '11'}]
与需求预期完全一致。
内容的提问来源于stack exchange,提问作者mkpisk
相关产品推荐
相关产品推荐

