Python 以编程方式匹配和合并文本文件
我想将一个EDL(编辑决策列表)文本文件与另一个包含字幕的文本文件合并。EDL由视频编辑程序Final Cut Pro生成,而文本文件只是普通文本。虽然这个特定的请求是针对特定的最终用途,但我想了解进行此类处理时可以遵循的一般方法。我对Python很熟悉,但对其他语言的示例也很熟悉,只要它们清晰且易于在UNIX/Mac工作站上使用 以下是EDL文件前几行的示例:Python 以编程方式匹配和合并文本文件,python,text-parsing,merging-data,Python,Text Parsing,Merging Data,我想将一个EDL(编辑决策列表)文本文件与另一个包含字幕的文本文件合并。EDL由视频编辑程序Final Cut Pro生成,而文本文件只是普通文本。虽然这个特定的请求是针对特定的最终用途,但我想了解进行此类处理时可以遵循的一般方法。我对Python很熟悉,但对其他语言的示例也很熟悉,只要它们清晰且易于在UNIX/Mac工作站上使用 以下是EDL文件前几行的示例: TITLE: SAMPLE EDL FCM: NON-DROP FRAME 001 GEN V C
TITLE: SAMPLE EDL
FCM: NON-DROP FRAME
001 GEN V C 00:01:03:16 00:01:04:29 01:00:03:06 01:00:04:19
* FROM CLIP NAME: TITLE 3D
* COMMENT:
* FROM CLIP IS A GENERATOR
002 GEN V C 00:01:04:15 00:01:08:03 01:00:04:29 01:00:08:17
* FROM CLIP NAME: TITLE 3D
* COMMENT:
* FROM CLIP IS A GENERATOR
003 GEN V C 00:01:04:15 00:01:09:05 01:00:10:19 01:00:15:09
* FROM CLIP NAME: TITLE 3D
* COMMENT:
* FROM CLIP IS A GENERATOR
004 GEN V C 00:01:04:15 00:01:07:03 01:00:17:17 01:00:20:05
* FROM CLIP NAME: TITLE 3D
* COMMENT:
* FROM CLIP IS A GENERATOR
下面是来自字幕文本文件的四个“伴随”行的示例:
001
If we think about climate change,
002
most of society's focused on fossil fuel combustion.
003
But what humans release on an annual basis is just one part of the carbon cycle.
004
Carbon dioxide concentrations also go up and down
最后,这里是一个期望最终结果的示例:
[00:00:03.06]
If we think about climate change,
[00:00:04.19]
[00:00:04.29]
most of society's focused on fossil fuel combustion.
[00:00:08.17]
[00:00:10.19]
But what humans release on an annual basis is just one part of the carbon cycle.
[00:00:15.09]
[00:00:17.17]
Carbon dioxide concentrations also go up and down
[00:00:20.05]
查看示例EDL文件,重要的文本位包括:
001
002
003
01:00:03:06 01:00:04:19
01:00:04:29 01:00:08:17
01:00:10:19 01:00:15:09
[]
01:00:03:06
变为00:00:03:06
,07:06:15:22
变为00:06:15:22
:
”(帧编号之前)转换为句点“
”,即00:00:03:06
变为00:00:03.06
提前谢谢大家。大致上这就是计划
- 读文件
- 为每种类型的文件创建解析器
- 将数据存储在有用的数据结构/对象中
- 以适当的格式输出
分解每一步,直到只需写下代码。在每个步骤进行测试。这是从一个文件到另一个文件的1对1匹配。将每个文件解析为有用标记的列表 一个列表将有开始和结束时间,另一个将有字幕 (开始、结束时间): 另一个文件将具有:
"If we think about climate change," -> "most of .. fuel combustion" -> "But what .. carbon cycle" -> ..
现在循环浏览这两个文件并合并两个列表(1到1)(可能创建一个新列表)。最后,将新列表写入文件。感谢Navi的反馈。我认为在这里提出我的问题有点帮助。这就是说,一些例子将有助于了解一种解决这一问题的好方法。虽然问题本身是非常具体的,但我认为可以用来解决这一问题的一般概念对人来说是有用的。
"If we think about climate change," -> "most of .. fuel combustion" -> "But what .. carbon cycle" -> ..