如何使用Python从文本文件中提取两列数据并保存为CSV文件?
嘿,我看到你正在尝试把文本数据集转换成X、Y两列的CSV文件,咱们来调整下代码,让它精准实现你的需求~
调整CSV转换代码,实现X/Y两列存储
首先得指出现有代码的小问题:你用zip(*[lines] * 1)其实是把每一行单独打包成一个组,这样写入CSV后每行只有一个单元格,自然没法分成X和Y两列。咱们根据你的文本文件格式分两种情况来修改:
情况1:文本每行是X和Y的组合(比如用空格/逗号分隔)
如果你的insurance_dataset.txt里,每一行是用空格、逗号或其他分隔符连在一起的X和Y值(比如123 456或者123,456),可以用下面的代码:
import csv # 读取文本并拆分X/Y对 with open('insurance_dataset.txt', 'r') as in_file: # 过滤空行+去掉每行首尾空白 valid_lines = (line.strip() for line in in_file if line.strip()) # 拆分每行内容为X和Y(这里默认按空白拆分,用逗号的话改成line.split(',')) xy_pairs = (line.split() for line in valid_lines) # 写入CSV文件 with open('dataset.csv', 'w', newline='') as out_file: writer = csv.writer(out_file) # 可选:写入表头,让CSV更清晰 writer.writerow(['X', 'Y']) # 批量写入所有X/Y数据对 writer.writerows(xy_pairs)
关键调整说明:
- 用
split()把每行拆分成两个元素,正好对应CSV的两列 - 加上
newline=''是为了避免Windows系统下写入CSV时出现多余空行 - 表头行
['X', 'Y']可以根据需要选择保留或删除
情况2:文本每两行对应一组X和Y(第一行X,第二行Y)
如果你的数据集是两行一组的结构,那只需要修改分组逻辑即可:
import csv import itertools with open('insurance_dataset.txt', 'r') as in_file: stripped = (line.strip() for line in in_file) lines = (line for line in stripped if line) # 每2行打包成一组,对应X和Y grouped = zip(*[lines] * 2) with open('dataset.csv', 'w', newline='') as out_file: writer = csv.writer(out_file) writer.writerow(['X', 'Y']) writer.writerows(grouped)
这里只把原代码里的zip(*[lines] * 1)改成*2,就能把连续两行打包成一个元组,写入CSV后就是整齐的X/Y两列啦~
内容的提问来源于stack exchange,提问作者mystic_data_yoda
相关产品推荐
相关产品推荐

