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

编程新手如何清洗pandas DataFrame中拼接的印英双语srt字幕文本

字幕拼接+文本清洗解决方案

你现有代码已经完成了双语字幕的读取和初步拼接,只需增加文本清洗逻辑即可解决异常字符问题,修改后的完整代码如下:

import pysrt
import pandas as pd
from bs4 import BeautifulSoup as bs

# 定义通用文本清洗函数,可按需增减替换规则
def clean_text(raw_text):
    # 先清理srt字幕常见的HTML格式标签(如<i>斜体标记等)
    text = bs(raw_text, "html.parser").get_text()
    # 替换换行符为空格
    text = text.replace("\n", " ")
    # 删除不需要的分号标记,如需保留分号可删掉这行,或改成替换为空格
    text = text.replace(";", "")
    # 清理首尾多余空白
    text = text.strip()
    return text

# 读取英文字幕
subs = pysrt.open("../input/movie-subtitles/Free-Guy_2021_English-ELSUBTITLE.COM-ST_62579580.srt")
data = {"time": [], "eng_lines": []} 
for sub in subs:
    # 读取字幕文本后先做清洗
    lines = clean_text(sub.text)
    time = sub.duration
    data["time"].append(time.to_time())
    data["eng_lines"].append(lines)
df_eng = pd.DataFrame(data)

# 读取印地语字幕
subs = pysrt.open("../input/movie-subtitles/Free-Guy_2021_Hindi-ELSUBTITLE.COM-ST_62579580.srt")
data = {"time": [], "hin_lines": []} 
for sub in subs:
    lines = clean_text(sub.text)
    time = sub.duration
    data["time"].append(time.to_time())
    data["hin_lines"].append(lines)
df_hin = pd.DataFrame(data)

# 拼接时去掉英文df的重复时间列,避免出现两个time列
df = pd.concat([df_hin, df_eng.drop("time", axis=1)], axis=1)
补充说明
  • 如果你后续发现还有其他需要清理的特殊字符,直接在clean_text函数里加对应的替换规则即可,比如要删除*号就加一行text = text.replace("*", "")
  • 如果你的两个字幕时间轴不完全对齐,直接按行拼接可能出现双语错位,可改成按时间戳匹配拼接,无需改动清洗逻辑
  • 如果需要后续导出清洗后的双语srt文件,可直接遍历df的每行内容按srt格式输出即可

内容的提问来源于stack exchange,提问作者Manish Tripathi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 05:36:08