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

如何用Python将my.txt中特定格式数据转存为CSV文件?

解决方案

看起来你已经开了个好头!咱们来一步步把这个文本转成你要的目标格式。首先得拆解输入文本的结构:你的my.txt里,每个水果的完整信息是由+ x [水果名]、+ y [数字]、+ z [数字]、+ a [数字]这四个片段依次组成的,前面的版本、标识类头信息可以直接忽略。

下面是完整的代码实现,你可以直接补充到你的现有代码后面:

# 先定义输出文件名
output_file = "output.csv"

with open(Unzipped_file_name) as f:
    # 读取整个文件内容(因为你的输入看起来是连在一起的一行)
    content = f.read().strip()

# 按"+ "分割内容,把每个属性片段拆出来
all_parts = content.split("+ ")
# 过滤掉非数据的头信息,只保留x/y/z/a开头的有效片段
data_segments = [part.strip() for part in all_parts if part.startswith(('x ', 'y ', 'z ', 'a '))]

# 写入目标文件:每4个片段对应一个水果的一行数据
with open(output_file, 'w') as out_f:
    # 每4个片段为一组循环
    for i in range(0, len(data_segments), 4):
        # 提取每个属性的值
        fruit_name = data_segments[i].split()[1]
        y_val = data_segments[i+1].split()[1]
        z_val = data_segments[i+2].split()[1]
        a_val = data_segments[i+3].split()[1]
        # 按空格分隔写入一行
        out_f.write(f"{fruit_name} {y_val} {z_val} {a_val}\n")

代码解释:

  1. 读取文件内容:因为你的输入文本是连续的一行(而非逐行的条目),所以用read()一次性读取全部内容更高效。
  2. 拆分与过滤:用split("+ ")把每个+开头的属性片段拆出来,然后过滤掉前面的头信息,只保留我们需要的x/y/z/a相关片段。
  3. 分组写入:每4个片段对应一个水果的完整信息,循环提取每个属性的值,按你要的格式拼接成一行写入输出文件。

如果你的实际输入文本是逐行存储的(比如每个+开头的内容单独一行),那可以用这个更灵活的版本:

output_file = "output.csv"
current_fruit = []

with open(Unzipped_file_name) as f, open(output_file, 'w') as out_f:
    for line in f:
        line = line.strip()
        # 跳过非数据的头信息行
        if not line.startswith('+ '):
            continue
        # 提取属性值
        key, val = line.lstrip('+ ').split(maxsplit=1)
        current_fruit.append(val)
        # 收集够4个属性就写入一行并重置
        if len(current_fruit) == 4:
            out_f.write(' '.join(current_fruit) + '\n')
            current_fruit = []

内容的提问来源于stack exchange,提问作者sachin sarangamath

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:03:00