我有一个 .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
と私に目配せをする。
你不能循环遍历句子并按字符数拆分吗?虽然这可能会导致汉字单词之间的分裂,但如有必要,您将不得不添加更多条件以进行检查。 (按最近的'、''を','は','。'等分割)
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])
当我尝试只打开文件一次时,我的编译器很奇怪,所以我的解决方案执行以下操作:读取每一行并将它们存储到列表中,遍历列表并找到所有大于 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()