在联盟网络与电商平台的数据对接中,CSV是最常用的交换格式。由于两边的业务字段定义不同,直接整体搬运往往会导致商品信息错乱或入库失败。我们需要一套清晰的列传输策略,把源文件中的列准确映射到目标平台所需的列结构上。

为什么需要列传输策略
联盟网络导出的CSV可能包含几十个字段,而电商平台只接收其中一部分,且名称、顺序、格式都有差异。手动处理容易漏列或填错位置。通过程序化的列映射,可以把混乱的源数据变成标准的目标结构。
读取并筛选CSV列
下面用Python演示如何读取联盟网络的CSV,并挑选需要的列:
import csv
# 源文件来自联盟网络导出
source_file = 'affiliate_export.csv'
# 目标平台需要的列名
target_columns = ['sku', 'title', 'price', 'stock']
with open(source_file, 'r', encoding='utf-8') as f:
reader = csv.DictReader(f)
# 只保留目标列
filtered = []
for row in reader:
new_row = {col: row.get(col, '') for col in target_columns}
filtered.append(new_row)
print('筛选后的数据条数:', len(filtered))
列名映射与顺序重排
如果源列名和目标列名不一致,可以建立映射表。以下代码展示如何将联盟网络的product_id映射为电商平台的sku:
# 源列名到目标列名的映射
column_map = {
'product_id': 'sku',
'name': 'title',
'sale_price': 'price',
'inventory': 'stock'
}
mapped_rows = []
for row in filtered:
mapped = {}
for src, dst in column_map.items():
mapped[dst] = row.get(src, '')
mapped_rows.append(mapped)
写入目标CSV
最后按电商平台要求的列顺序写出文件:
output_file = 'shop_import.csv'
with open(output_file, 'w', encoding='utf-8', newline='') as f:
writer = csv.DictWriter(f, fieldnames=target_columns)
writer.writeheader()
writer.writerows(mapped_rows)
print('已生成电商平台导入文件')
常见注意事项
- 注意编码格式,联盟网络常用utf-8,部分旧系统可能是gbk。
- 价格字段要统一为平台支持的精度与币种。
- 库存为0时,电商平台可能要求留空而非写0。
列传输策略的核心是把不可控的源结构转化为可控的目标结构,用代码代替手工,才能长期稳定。
小结
通过读取、筛选、映射、写出四个步骤,我们可以把联盟网络的CSV高效传输到电商平台。把上述逻辑封装成定时脚本,就能实现日常数据的自动同步。