为了方便后续小说写成之后的转换工作,需要用一个函数进行文档的转换,由于我在pygame中使用的脚本包括场景(Scene)、人物转换(Name)、背景音乐(BGM)的切换,因此会提前将这部分关键词进行预留,生成后进行相关的删减,将文本处理时间进行有效缩短,上述图片为基本的转换效果;
代码部分:
0. 函数调用 Scene_txt.txt_trans(‘单章’, ‘0_4’)
1. 文件导入
def txt_trans(src_name: str, dst_name: str):
src_file = ‘.\\fiction\\’ + src_name + ‘.txt’
dst_file = ‘.\\fiction\\’ + dst_name + ‘.txt’
_src = open(src_file, ‘r’, encoding=’utf-8′)
inword = _src.readlines()
dst_txtfile = ”
用以预备读取文件及目标文件,此处因为是个人使用,就不去使用Try去报个错了;
2. 文件分离
因为每个人的架构模式不同,我只是做部分要点的阐述。
本次我需要识别的内容包括场景切换、对话捕捉,因此主要识别其中的两种关键字,这其中涉及同段落中多段对话,文字过长的问题可以作为讲解,在尽量不改变语句本身意义的状态下,以长度和逗号进行匹配。
# 长文本转换,尽量不改变语句大意,以逗号为分割
def longtxt_trans(longstr: str):
_short_str = ”
min_len = int(40) # 最短行长度
max_len = int(80) # 最长行长度
maxi = int(len(longstr)/min_len) + 1
for i in range(0, maxi):
if len(longstr) <= max_len:
_short_str += longstr + ‘\n’
break
_idx1 = re.search(re.compile(‘,’), longstr[40: 80])
if _idx1 is None:
_idx = max_len
else:
_idx = _idx1.span(0)[0] + min_len
_short_str += longstr[0:_idx] + ‘\n’
longstr = longstr[_idx + 1: len(longstr)]
return _short_str
3、文件写回
这部分内容其实较为普遍,只是说将存放目标文件的内容进行输出
with open(dst_file, ‘w’, encoding=’utf-8′) as file_out:
file_out.write(dst_txtfile)
file_out.close()