知识代码
# 文本数据操作演示
# 文件读代码演示
def read_data(path):
# 文件打开
f = open(path, encoding='utf-8')
# 文件操作(读、写)
for line in f:
print(line)
# 文件流关闭
f.close()
# 文件写代码演示
def write_data(path, data):
f = open(path,mode='w+',encoding='utf-8')
f.write(data)
f.close()
if __name__ == '__main__':
path = '全唐诗.txt'
read_data(path)
target_path = 'poem.txt'
data = '妙夺鲛绡色,光腾月扇辉。非君下路去,谁赏故人机。'
write_data(target_path,data)
# 文件读代码演示
def read_data(path):
# 文件打开
with open(path, encoding='utf-8') as f:
# 文件操作(读、写)
for line in f:
print(line)
# 文件写代码演示
def write_data(path, data):
with open(path,mode='a+',encoding='utf-8') as f:
f.write(data)
if __name__ == '__main__':
path = '全唐诗.txt'
# read_data(path)
target_path = 'poem.txt'
data = '妙夺鲛绡色,光腾月扇辉。非君下路去,谁赏故人机。'
write_data(target_path,data)
案例实战
数据:
1、全唐诗.txt(唐诗文本)
2、dict.txt (场景字典,冒号分割,冒号左侧为场景,冒号右侧为场景关键字
如果没有冒号则场景和关键字是一个)
实战:
1、根据场景字典从全唐诗中进行筛选对应的一行诗
2、代码新建文件夹以“全唐诗场景_[年月日]”
3、将1步骤结果输出到2创建的文件夹中,并在此文件夹中创建不同子文件夹(以场景名命名),字场景文件夹中有不同的文件,以关键字命名
字典文件内容dict.txt
雨:雨,润物
风
花:梨花,牡丹
月:月,婵娟
class TangPoem():
# 构造函数
def __init__(self, path, dict_path):
self.path = path
self.dict_scene = {}
self.dict_result = {}
self.root_folder = ''
self.create_root_folder()
self.load_dict(dict_path)
# 诗词分析
def poem_analysis(self):
with open(self.path, encoding='utf-8') as file:
# 读取每一行数据
for line in file.readlines():
# 获取场景字典所有项进行遍历
for scene, v in self.dict_scene.items():
# 根据拆分后的关键字判断是否存在
for keyword in v.split(','):
if keyword:
self.calc_scene(line, scene, keyword)
# 输出结果
self.save_txt_result()
# 计算每一行的场景
def calc_scene(self, line, scene, kw):
# 判断关键字是否在当前行中
if kw in line:
value_dict = self.dict_result.get(scene)
if value_dict:
value = value_dict.get(kw)
if value:
value.append(line)
else:
value_dict[kw] = [line]
else:
self.dict_result[scene] = {kw: [line]}
# 创建根场景文件夹
def create_root_folder(self):
date = datetime.datetime.now().strftime('%Y%m%d')
target_folder = f'全唐诗场景_{date}'
if os.path.exists(target_folder) == False:
os.mkdir(target_folder)
self.root_folder = target_folder
# 创建场景文件夹
def create_scene_folder(self, scene):
scene_folder = os.getcwd() + os.sep + self.root_folder + os.sep + scene
if os.path.exists(scene_folder) == False:
os.mkdir(scene_folder)
return scene_folder
# 输出对应场景到不同文件夹中
def save_txt_result(self):
for scene, v in self.dict_result.items():
scene_folder = self.create_scene_folder(scene)
for poem_k, poem_sen in v.items():
newpath = scene_folder + os.sep + poem_k + '.txt'
with open(newpath, mode='w+', encoding='utf-8') as file:
for line in poem_sen:
file.write(line)
# 获取场景字典
def load_dict(self, dict_path):
dict_scene = {}
with open(dict_path, encoding='utf-8') as file:
for line in file.readlines():
lists = line.split(':')
if len(lists) == 2:
dict_scene[lists[0]] = lists[1].strip('\n')
else:
secne = lists[0].strip('\n')
dict_scene[secne] = secne
self.dict_scene = dict_scene
return dict_scene
if __name__ == '__main__':
tang_poem = TangPoem('全唐诗.txt', 'dict.txt')
tang_poem.poem_analysis()
# dict_scene = tang_poem.load_dict('dict.txt')
# print(dict_scene)