Python CSV:不使用Pandas,如何修正指定列写入的字符拆分问题?
修正CSV列提取代码的解决方案
问题根源
你的代码错误地将目标列的字符串拆分为单个字符输出,本质是误遍历了字符串的每个字符,而非直接输出完整的列内容。如果是需要先定位包含特定单词的列再提取,还可能存在列索引定位后的处理逻辑错误。
修正后的代码(动态定位目标列)
以下代码会先定位第一行中包含目标单词car的列,再提取所有行的该列内容写入新文件:
target_word = 'car' with open('input.csv', 'r') as infile, open('output.csv', 'w') as outfile: # 读取第一行,确定目标列的索引 first_line = infile.readline().strip() columns = first_line.split(',') # 查找目标列的索引(精确匹配) target_idx = None for idx, col in enumerate(columns): if col == target_word: target_idx = idx break if target_idx is None: print("未找到包含目标单词的列") exit() # 写入第一行的目标内容 outfile.write(f"{columns[target_idx]}\n") # 处理剩余所有行 for line in infile: line = line.strip() if not line: continue cols = line.split(',') outfile.write(f"{cols[target_idx]}\n")
核心修正点
- 移除了遍历目标字符串每个字符的循环,直接将提取到的完整列值写入文件
- 先通过第一行定位目标列的索引,确保所有行提取同一列
- 增加空行判断,避免处理无效行
固定列提取的简化版本
如果已经明确知道目标列的位置(比如示例中的第三列,索引为2),可以直接提取:
with open('input.csv', 'r') as infile, open('output.csv', 'w') as outfile: for line in infile: cols = line.strip().split(',') # 提取第三列(索引从0开始计数) outfile.write(f"{cols[2]}\n")
内容的提问来源于stack exchange,提问作者helppls
相关产品推荐
相关产品推荐

