我有一个很大的中文文本文件,我想将其重新格式化为单独的行,每行以句点结尾

I have a large Chinese text file and I want to reformat it into individual lines, each ending with a period

我想将此文件分成多行(每行以句点(问号、感叹号等)结尾)以便以后更容易处理。

我尝试使用 nltk,但无济于事:

text = r'你在哪里? 我想看到你的狗!我很喜欢你。'
tokenized_text=sent_tokenize(text)
print(tokenized_text)

实际结果: ['你在哪里? 我想看到你的狗!我很喜欢你。']

预期结果:

['你在哪里? 我想看到你的狗! 我很喜欢你。']

看到没有人回应...

import re
text = r'你在哪里? 我想看到你的狗!我很喜欢你。'
text_tokens = re.findall(r'(.*?[?!。])\s?', text) #with all the seperating tokens between []
print("\n".join(text_tokens))

产出

你在哪里?
我想看到你的狗!
我很喜欢你。

解释 .+? 寻找一个到无穷大的字符,直到第一次出现 [?!。] 您要拆分的任何代币 (previous)\s? 删除任何多余的空格(如果存在)。通过仅捕获文本和标记

"\n".join(text_tokens) 将列表加入 newline/formats 每个匹配项作为一个新行。

如果您将它从一个文件读取到另一个文件,那么一个非常简单的程序可能如下所示

import re
text_tokens = []
with open("example.txt", 'r') as text:
    text_tokens = re.findall(r'(.+?[?!。])\s?', text.read())
with open("output.txt", 'w+') as out:
    out.write("\n".join(text_tokens))