Python实现:将CSV单列数据按每11个元素一行写入文本文件
需求说明
读取仅含单列的CSV文件并转换为列表,从列表中每取出11个元素(每个元素为9位数字),用逗号分隔后作为一行写入另一个文本文件(每行11个元素适配A4纸),循环处理列表中剩余的所有元素。
当前代码
count = 0 textfile = 'texstf.txt' filepath = 'testfile2.csv' with open(filepath, "r") as f: lines = [ str(line.rstrip()) for line in f ] for key in lines: while(count < 11): with open(textfile, "w") as myfile: myfile.write(','.join(lines)) count += 1
示例数据
CSV输入示例
6381473 6381783 6381814 ...
预期输出示例
6381473,6381783,6381814,...,第11个元素 第12个元素,...,第22个元素 ...
修正后的代码
你的代码存在几个核心问题:
- 用
"w"模式打开文件会每次清空原有内容,无法实现追加写入 - 没有做分批取11个元素的逻辑,直接把整个列表一次性写入
for和while的嵌套逻辑错误,无法正确控制元素分组
以下是修正后的可运行代码:
textfile = 'texstf.txt' filepath = 'testfile2.csv' # 读取CSV文件,去除换行符并过滤空行 with open(filepath, "r") as f: lines = [line.rstrip() for line in f if line.strip()] # 按每11个元素为一组,分批写入文件 with open(textfile, "w") as myfile: # 步长为11的循环,实现分组 for i in range(0, len(lines), 11): current_group = lines[i:i+11] # 将组内元素用逗号连接成一行 line_content = ','.join(current_group) # 写入文件并换行 myfile.write(line_content + '\n')
代码说明
- 读取CSV时过滤空行,避免处理无效的空白内容
- 用
range(0, len(lines), 11)生成步长为11的索引,自动实现每11个元素的分组 - 一次性打开输出文件,分批写入所有分组内容,减少文件IO操作
- 每组元素用逗号连接后添加换行符,保证输出文件每行独立
内容的提问来源于stack exchange,提问作者lunar75
相关产品推荐
相关产品推荐

