1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
| import re from tkinter import filedialog, Tk
from tqdm import tqdm
""" 歌词格式: 词间不空行,段落间空行 紧随汉字后的半角小括号标注假名 """
def 半角括号转换(): global 文本 for i, 行 in tqdm(enumerate(文本), desc="半角括号转换", total=len(文本)): 行 = re.sub(r'(', r'(', 行) 行 = re.sub(r')', r')', 行) 文本[i] = 行
def 汉字加中括号(): global 文本 for i, 行 in tqdm(enumerate(文本), desc="初始化中括号", total=len(文本)): 行 = re.sub(r'([\u4e00-\u9fff々]+)\(', r'[\1](', 行) 文本[i] = 行
def 译文换行(): global 文本 新文本 = [] for i, 行 in tqdm(enumerate(文本), desc="疑问换行", total=len(文本)): 分割对象 = re.search(r'[\u4e00-\u9fff “”]+\n?$', 行) if 分割对象 is not None: if 分割对象.span()[0] == 0: 新文本.append(行) else: 新文本.append(行[:分割对象.span()[0]] + '\n') 新文本.append(行[分割对象.span()[0]:]) else: 新文本.append(行) 文本 = 新文本
def 选取文件(tit: str = "请选择歌词"): root = Tk() root.withdraw() file_path = filedialog.askopenfilename(title=tit, filetypes=[("TXT files", "*.txt")]) print("已取得文件路径") return file_path
def div块添加(): global 文本 文本.insert(0, '<div>') 文本.append('</div>') print("div块已添加")
def 头样式表添加(): global 文本 文本.insert(0, '<head><style>\n.n {color:fuchsia;}\n.t {color: aqua;}\n</style></head>\n') print("头样式表已添加")
def p段落整理(): global 文本 是译文歌词: bool = False for i, 行 in tqdm(enumerate(文本), desc="p段落整理", total=len(文本)): if 行 != '\n': if 是译文歌词: 文本[i] = '<p class="n">' + 行 + '</p>' 是译文歌词 = False else: 文本[i] = '<p class="t">' + 行 + '</p>' 是译文歌词 = True
def 空行修正(): global 文本 for i, 行 in tqdm(enumerate(文本), desc="空行修正", total=len(文本)): if 行 == '\n': 文本[i] = '<hr>' + 行
def 注音修正(): global 文本 for i, 行 in tqdm(enumerate(文本), desc="注音修正", total=len(文本)): 行 = re.sub(r'\[', r'<ruby><rb>', 行) 行 = re.sub(r']\(', r'</rb><rt style="font-size:0.75em">', 行) 行 = re.sub(r'\)', r'</rt>', 行) 文本[i] = 行
if __name__ == '__main__': 路径 = 选取文件() with open(路径, encoding='utf-8') as 文件: 文本 = 文件.readlines()
半角括号转换() 译文换行() 汉字加中括号()
注音修正() p段落整理() 空行修正()
div块添加() 头样式表添加()
print("处理完毕")
路径 = re.sub(r'\.txt', r'_f.html', 路径) with open(路径, encoding='utf-8', mode='w') as 文件: 文件.writelines(文本) print("已写入")
|