正在检测字符串中的“/>”

2024-10-03 06:32:44 发布

您现在位置:Python中文网/ 问答频道 /正文

如果这是以前发布的,我真的很抱歉,但我根本找不到网上的答案。

我正在阅读字幕,希望排除主题歌/结尾。它们在一行开头用“?”符号表示。我试图使用ASCII值和chr()命令,但无法使其工作。

如果有人能张贴一种方法来查看“?”符号在字符串中的时间,那将是非常感谢的。

谢谢你的时间。


Tags: 方法字符串答案命令结尾ascii时间符号
3条回答

迭代输入副标题文件中的行,并将那些不以^{cd1>}(~)开头的行写入输出文件。

对于Python 2和3:

with open('file.srt') as subs, open('outfile.srt', 'w') as out:
    for line in subs:
        if not line.startswith(u'\u266a'):
            out.write(line)

如果要查找任何地方包含~ ~的行,请使用^{{cd2>}:

^{pr2}$

当然,这将删除以~”开头的所有行,而不仅仅是歌曲结尾中的行。而且它甚至可能不有效,因为不同的字幕文件格式的作用不同。要仅删除这些字幕行,需要了解播放主题歌的时间范围,这需要了解字幕文件格式,因为时间代码表示形式不同。例如,SRT文件包含多行,用于每个字幕,如:

^{pr3}$

所以现在您需要检测以~ ~开头的行,然后备份并删除正在进行的2行,然后删除以下行。我不是文件格式专家。。。。第一行看起来像序列号,我不知道它是否必须是连续的。在这种情况下,通常更容易将整个文件读入列表,然后处理列表。

不管怎样,现在您知道如何检测以特定unicode字符开头的行,这样您就可以继续了。

def find_music_in_string(my_string):
    for char in my_string:
        if ord(char) == 9834:
            print 'i have found you ' + char

find_music_in_string(u'\u266a')

ord()获取char的int值,其值为9832。在

“✓”不在ASCII字符集中。它使用IBM PC上13位(0x0D)的字体。在unicode字符集中,它位于0x266A位置,因此在Python中可以使用u"\u266A"。如果指定源文件的编码,则可以在字符串中包含任何字符:

# -*- coding: utf-8 -*-
print("♪")

请注意,还有一个问题:如果输出代码页无法对该字符进行编码,python将引发异常:

print("\u266A")

UnicodeEncodeError: 'charmap' codec can't encode character '\u266a' in position 0: character maps to <undefined>

如果您想打印到控制台,在Python3.4(可能更早,但在Python2.7中没有),您可以在启动程序之前更改代码页(例如executechcp 65001)来解决这个问题。在

相关问题 更多 >