用逗号(多个逗号)围绕中间分割文本文件的长句

问题描述 投票:0回答:2

我有一个 .srt 文件,我想拆分它以使用 mpv 观看。这是一整本书,都变成了用于语言学习的 .srt,并附有一本有声读物。 我的问题是,它是日语,单词之间没有空格,所以 mpv 不会打断长句子,而是让它们变得非常小以适应一行大小。

我试过字幕编辑,但它对日语不起作用。

所以我正在尝试做我自己的剧本,虽然我对此了解不多。 我被困在如何打断一个有多个逗号的句子上,我该如何在中间选择一个?

这是我到目前为止得到的:


with open("test.txt", encoding="utf8") as file:
    for line in file:
       #print(line)
       size = len(line)
       if size > 45:
           #break sentence in half, using Japanese comma 、

这是我用于测试的文本文件:

10
00:00:55,640 --> 00:01:09,580
クラスで一番、明るくて、優しくて、運動神経がよくて、しかも、頭もよくて、みんなその子と友達になりたがる。

11
00:01:11,090 --> 00:01:24,500
だけどその子は、たくさんいるクラスメートの中に私がいることに気づいて、その顔にお日様みたいな眩しく、優しい微笑みをふわーっと浮かべる。

12
00:01:24,730 --> 00:01:32,250
私に近づき、「こころちゃん、ひさしぶり!」

13
00:01:32,910 --> 00:01:35,180
と挨拶をする。

14
00:01:37,450 --> 00:01:41,730
周りの子がみんな息を吞む中、「前から知ってるの。

15
00:01:42,000 --> 00:01:42,820
ね?」

16
00:01:43,820 --> 00:01:46,550
と私に目配せをする。
python text-files
2个回答
0
投票

你不能循环遍历句子并按字符数拆分吗?虽然这可能会导致汉字单词之间的分裂,但如有必要,您将不得不添加更多条件以进行检查。 (按最近的'、''を','は','。'等分割)

with open("test.txt", encoding="utf8") as file:
    for line in file:
       #print(line)
       size = len(line)
        if size > 45:
            for i in range(0, len(line), 45):
                print(line[i:i + 45])

0
投票

当我尝试只打开文件一次时,我的编译器很奇怪,所以我的解决方案执行以下操作:读取每一行并将它们存储到列表中,遍历列表并找到所有大于 45 个字符的行,找到一个中间附近的逗号,然后将前后行添加到列表中。完成后,将列表写入文件。

fileLines = []

def findCommaNearMiddle(line):
    length = len(line)
    middle = int(length/2)
    # check values on either side until comma is found
    distance = 0
    while distance <= middle:
        if line[middle+distance] == '、':
            return middle+distance
        elif line[middle-distance] == '、':
            return middle-distance
        distance += 1
    return -1 # idealy, this will never happen

with open("test.txt", "r", encoding="utf8") as file:
    fileText = file.read()
    fileLines = fileText.split('\n');
    for i in range(len(fileLines)):
        line = fileLines[i]
        size = len(line)
        if size > 45:
            middleComma = findCommaNearMiddle(line)
            fileLines[i] = line[:middleComma]
            fileLines.insert(i+1, line[middleComma+1:]) # +1 to get rid of comma
    file.close()

with open("test.txt", "w", encoding="utf8") as file:
    for line in fileLines:
        file.write(line + '\n')

    file.close()
© www.soinside.com 2019 - 2024. All rights reserved.