0

我有一个关于如何自动化将内容从 .srt 文件复制到 .xls 文件的过程的问题。

我想确保 .srt 文件中的内容可以粘贴到 .xls 的相应列中(例如 B 列的超时;C 列的超时;E 列的字幕。)

为了避免手动复制和粘贴,有没有办法编写这个过程的脚本?有任何想法吗?

非常感谢您!:)

更新:我刚刚发现Subtitle Edit可以将.srt另存为csv,这将能够将文件更改为Excel文件。这很方便!但是还有一个问题,我需要将这个csv中的内容复制到另一个Excel模板中,这个模板的结构不同,所以我不能直接复制粘贴csv中的值。我正在研究如何使这更容易......

暂时不能发图,但是情况是srt转换后的csv文件中的time-in文本占一行,而Excel模板中的time-in文本占了两行,所以不能直接将一个excel文件中的所有文本复制并粘贴到另一个文件中。有没有更简单的方法来做到这一点?谢谢!

4

2 回答 2

1

In Vim I would use:

:%s/\(.\)$\n\|-->/\1\t/g | :g/^$/d | :%s=\s\+$==

I know still not a script but now it should be easy to import it in Excel :-)

It means find the line ending with character and substitute it with that character and tabulator or find characters --> and substitute them with tabulator, and then delete empty lines, and at last remove white spaces at the end of the lines.

于 2015-07-28T22:03:02.593 回答
1

在脚本中,您可以使用perl来进行替换:

perl -0777 -pe 's/\n([^\n])/\t$1/g; s/ --> /\t/g' input.srt | \
perl -ne 's/^\t//; print unless /^$/' > output.csv

对于此示例输入

1
00:00:01,478 --> 00:00:04,020
Srt sample

2
00:00:05,045 --> 00:00:09,545
<i>italic</i> font

3
00:00:09,378 --> 00:00:13,745
<b>bold</b> font

4
00:00:14,812 --> 00:00:16,144
Multi
Line

你得到以下输出:

1   00:00:01,478    00:00:04,020    Srt sample
2   00:00:05,045    00:00:09,545    <i>italic</i> font
3   00:00:09,378    00:00:13,745    <b>bold</b> font
4   00:00:14,812    00:00:16,144    Multi   Line

关于命令:有两个链式perl命令

  • 第一个完成了艰苦的工作:用制表符替换换行符和箭头(将双换行符保留为一个换行符)。

  • 第二个只做一些清理,它从行开头删除标签并删除多余的空行。

于 2015-07-29T21:26:37.787 回答