如何将mm:ss.sss格式的时长转换为总秒数?
如何将mm:ss.sss格式的时长转换为总秒数?
嘿,这个需求我太熟了!不管你是用表格工具手动处理,还是写脚本批量转换CSV,都有简单的办法,我给你拆解一下:
方法一:用Excel/Google Sheets公式快速计算
如果你的CSV直接用表格软件打开处理,用公式就能一键搞定:
通用公式(所有Excel版本/Google Sheets都能用)
假设你的时长数据在A1单元格,输入这个公式:=VALUE(LEFT(A1,FIND(":",A1)-1))*60 + VALUE(RIGHT(A1,LEN(A1)-FIND(":",A1)))
- 原理:先用
FIND找到冒号的位置,LEFT提取前面的分钟数转成数值后乘60,RIGHT提取后面的秒数部分转成数值,两者相加就是总秒数。
简化公式(Excel 365/Google Sheets)
如果用的是新版本Excel或者Google Sheets,用TEXTSPLIT会更简洁:=SUM(TEXTSPLIT(A1,":")*{60,1})
- 原理:
TEXTSPLIT把时长按冒号拆成分钟和秒数两个部分,分别乘以60和1后求和,一步到位。
输入公式后下拉填充,就能批量把整列的时长转成总秒数啦!
方法二:用Python批量处理大CSV文件
如果你的CSV数据量很大,手动处理太麻烦,写个小脚本就效率很高:
用Pandas(推荐,代码简洁)
import pandas as pd # 定义转换函数 def duration_to_seconds(duration_str): # 按冒号分割分钟和秒数 minutes, seconds = duration_str.split(":") # 计算总秒数:分钟转成浮点数乘60,加上秒数的浮点数 return float(minutes) * 60 + float(seconds) # 读取CSV文件 df = pd.read_csv("你的文件名.csv") # 假设时长列叫"duration",新增一列存总秒数 df["total_seconds"] = df["duration"].apply(duration_to_seconds) # 保存处理后的文件 df.to_csv("转换后的文件名.csv", index=False)
纯Python(不用Pandas也能搞定)
如果不想装Pandas,用原生Python也能处理:
# 打开原文件和输出文件 with open("你的文件名.csv", "r", encoding="utf-8") as in_file, open("转换后的文件名.csv", "w", encoding="utf-8") as out_file: # 读取表头并写入新表头 header = in_file.readline().strip() out_file.write(f"{header},total_seconds\n") # 遍历每一行处理 for line in in_file: line = line.strip() if not line: continue # 按逗号分割列(假设CSV用逗号分隔) columns = line.split(",") # 假设时长在第一列(索引0),根据你的实际情况调整 duration = columns[0].strip() mins, secs = duration.split(":") total_sec = float(mins) * 60 + float(secs) # 把总秒数加到列里,写入新文件 columns.append(str(total_sec)) out_file.write(",".join(columns) + "\n")
小提醒
如果你的时长单元格里有多余的空格(比如12:05.001),记得先加一步duration.strip()去掉空格,不然split会出错哦!
备注:内容来源于stack exchange,提问作者user1813005
相关产品推荐
相关产品推荐

