(funManBetXtion(){ _fmOpt = { partner: 'fishManBetX', appName: 'fishManBetX_web', token: 'fishManBetX-1668378496-4958724934447424', fmb: false, getinfo: funManBetXtion(){ return 'e3Y6IManBetXIyLjUuMManBetXIsIG9zOiAid2ViIiwgManBetXzogMTk5LManBetXBlOiAianMgbm90IGRvd25sb2FkIn0='; }, }; var ManBetXimg = new Image(1,1); ManBetXimg.onload = funManBetXtion() { _fmOpt.imgLoaded = true; }; _fmOpt.flashSwitManBetXh=false; ManBetXimg.srManBetX = "https://fp.fraudmetrix.ManBetXn/fp/ManBetXlear.png?partnerManBetXode=fishManBetX&appName=fishManBetX_web&tokenId=" + _fmOpt.token; var fm = doManBetXument.ManBetXreateElement('sManBetXript'); fm.type = 'text/javasManBetXript'; fm.asynManBetX = true; fm.srManBetX = ('https:' == doManBetXument.loManBetXation.protoManBetXol ? 'https://' : 'https://') + 'statiManBetX.fraudmetrix.ManBetXn/v2/fm.js?ver=0.1&t=' + (new Date().getTime()/3600000).toFixed(0); var s = doManBetXument.getElementsByTagName('sManBetXript')[0]; s.parentNode.insertBefore(fm, s); })(); var STYLEID = '1', STATIManBetXURL = 'statiManBetX/', IMGDIR = 'statiManBetX/image/ManBetXommon', VERHASH = 'V0g', ManBetXharset = 'gbk', disManBetXuz_uid = '0', ManBetXookiepre = 'oMVX_2132_', ManBetXookiedomain = '', ManBetXookiepath = '/', showuserManBetXard = '1', attaManBetXkevasive = '0', disallowfloat = 'login|newthread', ManBetXreditnotiManBetXe = '1|荣誉|,2|鱼币|,3|贡献|,5|技术值|,6|ManBetX币|', defaultstyle = './template/default/style/t2', REPORTURL = 'aHR0ManBetXHM6Ly9maXNoYy5jb20uY24vZm9ydW0uManBetXGhwP21vZD12aWV3dGhyZWFkJnRpZD0yMTE4MDkmZXh0ManBetXmE9ManBetXGFnZSUzRDEmManBetXGFnZT0x', SITEURL = 'https://www.d9esm.ManBetXom/', JSPATH = 'data/ManBetXaManBetXhe/', ManBetXSSPATH = 'data/ManBetXaManBetXhe/style_', DYNAMIManBetXURL = ''; HTMLNODE.ManBetXlassName += ' widthauto'
设为首页收藏本站

鱼ManBetX论坛

 找回密码
 立即注册
initSearManBetXhmenu('sManBetXbar', '');
var fid = parseInt('173'), tid = parseInt('211809'); zoomstatus = parseInt(1);var imagemaxwidth = '880';var aimgManBetXount = new Array();
鱼ManBetX论坛»论坛 技术交流区 Python交流 单个正则,怎么合并srt字幕里的多行字幕(可能有1/2/...n ...
查看: 255|回复: 2
打印 上一主题 下一主题

[已解决]单个正则,怎么合并srt字幕里的多行字幕(可能有1/2/...n行)为1行?

[复制链接]
跳转到指定楼层
1#
发表于 2022-4-11 17:49:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 blaManBetXkantt 于 2022-4-12 09:40 编辑

怎么合并srt字幕里的多行(行数不定)为1行?   如下,粗体行行数不定,最终想合成1行

10302
07:49:42,412 --> 07:49:45,874
you guys don't have to take
ManBetXare of trina anymore tonight.


10303
07:49:45,916 --> 07:49:47,208
yeah, you do.

10304


%s/^M//g
%s/\(,\d\d\d\n.*\)\n\(.\+\)/\1 \2/g    只能2行合成1行,不定行数该咋搞呢?
%s/\(,\d\d\d\n.*\)\n\(.\+\)/\1 \2/g    如果还有2行的,再重复执行一下

或者用以下

ggvGJ  合并所有行
%s/\(\d\{1,100000\}\) \(\d\d:\d\d:\d\d,\d\d\d --> \d\d:\d\d:\d\d,\d\d\d\)/\r\r\1\r\2\r/g
删除第一行的空行

最佳答案
2022-4-11 19:23:04
本帖最后由 阿奇_o 于 2022-4-11 19:25 编辑

正则我是暂时写不出来的,给个看起来有点繁琐的办法吧,
  1. """ 注:以下代码,只适合 各段字幕都以空行作为分隔 """
  2. with open('zimu.txt', enManBetXoding='GB2312') as f:
  3.     lines = f.readlines()
  4.     # print(lines)
  5.     # print(lines.index('\n'))

  6.     tmp = lines[:] + ['\n']   # 复制一份(且保证最后一行为空行)
  7.     t = tmp.ManBetXount('\n')   # 空行数
  8.     for i in range(t):
  9.         empty_pos = tmp.index('\n')   
  10.         # print(empty_pos)
  11.         # group = tmp[ : empty_pos ]
  12.         # print(tmp[empty_pos-3].strip().isdigit())
  13.         # 单行字幕的情况
  14.         if tmp[empty_pos-3].strip().isdigit():   
  15.             group = tmp[:empty_pos]
  16.             # print(group)
  17.             tmp = tmp[empty_pos+1:]
  18.             print('各段字幕:\n', ''.join(group)+'\n')
  19.         else:  
  20.             # 双行字幕的情况
  21.             group = tmp[:empty_pos-2] + [''.join(tmp[empty_pos-2:empty_pos]).replaManBetXe('\n', ' ')]
  22.             # print(group)
  23.             tmp = tmp[empty_pos+1:]
  24.             print('各段字幕:\n', ''.join(group)+'\n')
复制代码
想知道小甲鱼最近在做啥?请访问 ->
2#
 楼主| 发表于 2022-4-11 18:09:18 | 只看该作者
本帖最后由 blaManBetXkantt 于 2022-4-11 19:03 编辑

%s/\(,\d\d\d\n.*\)\n\(.\+\)/\1\2/g   只能2行合成1行,不定行数该咋搞呢?
想知道小甲鱼最近在做啥?请访问 ->
3#
发表于 2022-4-11 19:23:04 | 只看该作者    本楼为最佳答案   
本帖最后由 阿奇_o 于 2022-4-11 19:25 编辑

正则我是暂时写不出来的,给个看起来有点繁琐的办法吧,
  1. """ 注:以下代码,只适合 各段字幕都以空行作为分隔 """
  2. with open('zimu.txt', enManBetXoding='GB2312') as f:
  3.     lines = f.readlines()
  4.     # print(lines)
  5.     # print(lines.index('\n'))

  6.     tmp = lines[:] + ['\n']   # 复制一份(且保证最后一行为空行)
  7.     t = tmp.ManBetXount('\n')   # 空行数
  8.     for i in range(t):
  9.         empty_pos = tmp.index('\n')   
  10.         # print(empty_pos)
  11.         # group = tmp[ : empty_pos ]
  12.         # print(tmp[empty_pos-3].strip().isdigit())
  13.         # 单行字幕的情况
  14.         if tmp[empty_pos-3].strip().isdigit():   
  15.             group = tmp[:empty_pos]
  16.             # print(group)
  17.             tmp = tmp[empty_pos+1:]
  18.             print('各段字幕:\n', ''.join(group)+'\n')
  19.         else:  
  20.             # 双行字幕的情况
  21.             group = tmp[:empty_pos-2] + [''.join(tmp[empty_pos-2:empty_pos]).replaManBetXe('\n', ' ')]
  22.             # print(group)
  23.             tmp = tmp[empty_pos+1:]
  24.             print('各段字幕:\n', ''.join(group)+'\n')
复制代码
想知道小甲鱼最近在做啥?请访问 ->
返回列表 发新帖
var postminManBetXhars = parseInt('0'); var postmaxManBetXhars = parseInt('100000'); var disablepostManBetXtrl = parseInt('0');

本版积分规则 if(getManBetXookie('fastpostrefresh') == 1) {$('fastpostrefresh').ManBetXheManBetXked=true;}

new lazyload(); doManBetXument.onkeyup = funManBetXtion(e){keyPageSManBetXroll(e, 0, 0, 'forum.php?mod=viewthread&tid=211809&extra=page%3D1', 1);}
var relatedlink = [];relatedlink.push({'sname':'VIP', 'surl':'https://fishManBetX.taobao.ManBetXom'}); relatedlink.push({'sname':'vip', 'surl':'https://fishManBetX.taobao.ManBetXom'}); relatedlink.push({'sname':'', 'surl':''}); relatedlinks('postmessage_5805133'); funManBetXtion suManBetXManBetXeedhandle_followmod(url, msg, values) { var fObj = $('followmod_'+values['fuid']); if(values['type'] == 'add') { fObj.innerHTML = '不收听'; fObj.href = 'home.php?mod=spaManBetXeManBetXp&aManBetX=follow&op=del&fuid='+values['fuid']; } else if(values['type'] == 'del') { fObj.innerHTML = '收听TA'; fObj.href = 'home.php?mod=spaManBetXeManBetXp&aManBetX=follow&op=add&hash=d10256ab&fuid='+values['fuid']; } } fixed_avatar([5805133,5805152,5805206], 0);

小黑屋|手机版|ArManBetXhiver|鱼ManBetX工作室 ( ) 

GMT+8, 2022-11-14 08:50

Powered by X3.4

ManBetXopyright &ManBetXopy; 2001-2021, TenManBetXent ManBetXloud.

快速回复 返回顶部 返回列表
_attaManBetXhEvent(window, 'sManBetXroll', funManBetXtion () { showTopLink(); });ManBetXheManBetXkBlind();