Python:如何将两个空行之间的文本读入字符串

Posted

技术标签:

【中文标题】Python:如何将两个空行之间的文本读入字符串【英文标题】:Python: How to read text between two empty lines into a string 【发布时间】:2014-10-10 18:43:56 【问题描述】:

我是编程和 Python 的初学者,我正在编写一个脚本来处理 .srt 字幕文件。我的问题是我不知道如何:通读文件,并首先在文本开头和第一个空行之间分析文本,然后在该空行和下一个空行之间分析文本,直到文件结尾( “分析”,例如计算其中一部分的长度,将另一部分转换为数字等)。

您可以阅读 .srt 格式规范并查看示例 here(类型:Plain);文件末尾有一个空行。我想将每个字幕的显示时间/持续时间与其中的字符数进行比较。从文件的开头开始,每个字幕(及其编号、持续时间信息和文本)与下一个由一个空行分隔(一个“\n”,我可以用if "\n" in line and len(line) == 2: 之类的东西找到它们)。时间码总是包含一个“-->”并且总是以三位数结尾,所以如果我有一个字符串,我可以找出它在哪里。问题是,我需要以某种方式执行以下操作:

    读取字幕文本,可以是1-3行带换行符,计算其字符长度。

    读取持续时间,转换为以秒为单位的持续时间。

    读取行号(以便能够将其与我的结果一起输出到某处,例如“第 44 行的持续时间为 4.54 秒”)。

我可以轻松完成第二个,但我不确定如何检查整个文件并告诉 Python:找到每个字幕文本的结尾,计算每行中字符的长度,添加它,读取持续时间, 将它们分开,将其与行号一起输出,并对下一个字幕执行相同操作,直到到达文件末尾。如果是一个字幕,我可以很容易地做到这一点,但我不确定如何对一个字幕进行检查,然后再寻找下一个。我已经为此找了 2 个小时,但找不到类似的东西。

【问题讨论】:

【参考方案1】:

正则表达式可以成为帮助解决此类处理的强大工具。 您可以使用正则表达式来匹配或解析单个记录或整个文件。 如果您不了解 Python 中的正则表达式,我强烈建议您编写一些关于该主题的教程......这应该会给您很多想法,如何将其应用于您的问题。

关于这个主题有很多很好的参考资料,但这里只是一个:http://www.diveintopython.net/regular_expressions/

【讨论】:

以上是关于Python:如何将两个空行之间的文本读入字符串的主要内容,如果未能解决你的问题,请参考以下文章

将文本中的数字读入python中的变量

Markdown语法

将文本文件读入二维向量。 C++

Python代码规范

Java IO流-字节流

如何将带有文本信息的 1.3 GB csv 文件读入 Python 的 pandas 对象?