如何仅对阿拉伯语SRT文件的文本内容执行完全反转操作?
解决SRT文件仅反转文本内容的方案
针对你需要仅反转SRT文件中阿拉伯语文本内容、保留编号与时间戳的需求,之前固定行数的处理方式无法适配多行文本的字幕块,下面是可行的逐块处理方案:
实现思路
SRT字幕按字幕块划分:编号行 → 时间戳行 → 1行/多行文本内容 → 空行(分隔块)。我们逐块遍历,对每个块仅反转文本行的内容,其余部分原样保留。
完整代码
# 读取原SRT文件(utf-8编码确保阿拉伯语正常读写) with open('myFile.txt', 'r', encoding='utf-8') as file: lines = file.readlines() processed_lines = [] current_index = 0 total_lines = len(lines) while current_index < total_lines: # 保留编号行 processed_lines.append(lines[current_index]) current_index += 1 # 保留时间戳行 if current_index < total_lines: processed_lines.append(lines[current_index]) current_index += 1 # 处理文本行:逐行反转内容,直到遇到空行或文件结束 while current_index < total_lines and lines[current_index].strip() != '': # 剥离换行符后反转文本,再补回换行符 raw_text = lines[current_index].rstrip('\n') reversed_text = raw_text[::-1] + '\n' processed_lines.append(reversed_text) current_index += 1 # 保留块分隔空行 if current_index < total_lines: processed_lines.append(lines[current_index]) current_index += 1 # 写入处理后的SRT文件 with open('reversed_arabic_subs.srt', 'w', encoding='utf-8') as file: file.writelines(processed_lines)
代码说明
- 用
while循环逐块遍历,适配任意行数的文本内容,解决固定行数模式的局限性 - 编号行、时间戳行、块分隔空行均原样保留,仅修改文本行的字符顺序
- 强制使用
utf-8编码读写,避免阿拉伯语出现乱码 - 文本反转通过Python字符串切片
[::-1]实现,确保完全反转每个文本行的内容
内容的提问来源于stack exchange,提问作者Developer2020
相关产品推荐
相关产品推荐

