懒是科技发展的动力——文档格式转换

    为了方便后续小说写成之后的转换工作,需要用一个函数进行文档的转换,由于我在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()


资源下载: