Python日期处理错误修复:从TRIP_ID字符串提取日期至指定列
解决方案
1. 提取日期并替换第11列
从清理后的trip_id中,前4位是ID,剩余部分就是目标日期(比如740025Jun2014对应的25Jun2014)。直接通过trip_id[4:]提取日期,再替换输出行的第11列(Python索引为10,因为序列从0开始计数)即可。
2. 修正BIDGROUP行数值
假设BIDGROUP行需要调整为拆分后的TRIP_ID总数,我们可以先记录拆分后的ID数量,再找到BIDGROUP行修改对应列的数值(你可根据实际期望输出调整具体列索引)。
修改后的完整代码
import sys lines = [] for line in sys.stdin: lines.append(line.strip()) output_lines = [] trip_count = 0 # 记录拆分后的TRIP_ID数量,用于BIDGROUP行修正 for line in lines: elements = line.split(", ") if elements[2] == '"ADVANCED_TRIP"': elements[2] = '"TRIP_ID"' trip_ids = elements[7].split(",") trip_count = len(trip_ids) # 获取拆分后的TRIP_ID总数 for i, trip_id in enumerate(trip_ids): trip_id = trip_id.strip('"') # 提取日期部分 trip_date = trip_id[4:] output_line = elements[:7] + [f'"{trip_id[:4]}"'] + elements[8:] output_line[4] = str(int(output_line[4]) + i) # 替换第11列(索引10)的默认日期 output_line[10] = f'"{trip_date}"' output_lines.append(output_line) else: # 修正BIDGROUP行的对应数值(示例为修改第5列,根据你的需求调整索引和逻辑) if elements[2] == '"BIDGROUP"': elements[4] = str(trip_count) output_lines.append(elements) for output_line in output_lines: print(", ".join(output_line))
关键修改点说明
- 新增
trip_date = trip_id[4:]提取日期,通过output_line[10] = f'"{trip_date}"'替换第11列的默认值。 - 新增
trip_count变量记录拆分后的TRIP_ID数量,用于匹配BIDGROUP行的期望数值(若你的BIDGROUP行需要修改其他列,直接调整对应索引即可)。
内容的提问来源于stack exchange,提问作者FluctLigth
相关产品推荐
相关产品推荐

