Python 基础练习:演示 jieba 库的分词效果(datetime 库、文件读写、try except、输出字符串的格式化、EOF 的处理)

本文介绍了如何使用Python的jieba库进行中文分词,并结合datetime库、文件读写、异常处理及字符串格式化进行实践。通过编写代码读取含有多个样例的txt文件,对每个样例进行分词并计时,同时处理EOF结束输入的情况。内容涵盖多个Python基础知识,如文件1的'汉语满级',文件2的'科幻小说(一)'和文件3的'林子祥 - 阿Lam日记'的分词结果。

测试日期:2020/10/2

要求

在终端中运行:

pip install jieba

安装 jieba 分词库。

编写 Python 代码,将需要进行分词的中文文本放入 txt 文件(编码:UTF-8),然后读入文件,输出分词结果。
使用 datetime 库中的函数计量将文件的全部内容读入以及分词需要的时间。
每读取一个文件和每输出一个样例时,都输出文件编号或样例编号(编号均从 1 开始)。
测试文件的格式要求:
1、多个连续的行视为同一组样例。
2、每两个样例之间单独隔一个空行。
3、在最后一个测试样例之后输入三个空行。
若不按照此格式构造测试文件,则会导致不能测试该文件全部的样例。

知识点

库的引用
datetime 库
文件的读写
try except 异常处理语句
输出字符串的格式化
EOF 的处理
UTF-8

代码

import datetime
import jieba

file_id = case_id = 0
sep = '-' * 78 + '\n'

while True:
	try:
		print('Please input the path of the test file: ')
		path = input()

		test_file = open(path, 'rt', encoding = 'utf-8')
		t0 = datetime.datetime.now();
		contents = test_file.readlines()
		t1 = datetime.datetime.now();
		print("\nReading completed. Time elapsed: " + str((t1 - t0).microseconds) + ' us.')

		file_id += 1
		print('\n{0:-^78}\n'.format('File ' + str(file_id)))
		case = ''

		for line in contents:
			if case.endswith('\n\n') == False:
				case += line
			else:
				case_id += 1
				print('----------------Case ' + str(case_id) + ':----------------\n\nIN:\n' + case[0:-1])

				t0 = datetime.datetime.now();
				result = jieba.lcut(case)
				t1 = datetime.datetime.now();
				print("Partition completed. Time elapsed: " + str((t1 - t0).microseconds) + ' us.\n\nOUT:')

				for word in result:
					print(word, end = ' ')
				print('')
				case = line
		print(sep)
	except EOFError:
		print('Exiting...')
		exit(0)

结果

文件1

汉语满级

让你别别别的别别别的你非得别别的!

在乎你的我只在乎我在乎的你是否像在乎你的我在乎我在乎的你一样在乎在乎你的我。

我有一点想点一点一点一点喝。

我不喜欢我喜欢的人喜欢我不喜欢的人。

老七写道老六想起来老五对老四说老三的老二老大了。

你什么意思?什么什么意思?问你什么意思?没什么意思。没什么意思是什么意思?就是意思意思。

大不一样,不大一样,一样不大,不一样大!

我已经上了动车准备上上海上上她。

-客服小姐:小明你是要几等座?
-小明:你们一共有几等?
-客服小姐:特等,一等,二等,等等,二等要多等一等。

你怎么知道我知不知道你知道他知道?

你以为我以为你以为什么?

今天下雨,我骑车差点摔倒,好在我一把把把把住了!

多亏跑了两步,差点没上上上上海的车。

用毒蛇的蛇毒毒毒蛇毒蛇会被毒蛇的蛇毒毒死吗?



结果:

Please input the path of the test file:
D:\0_Study\NLP\Test Materials\普通话分词测试 - 汉语十级.txt

Reading completed. Time elapsed: 0 us.

--------------------
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值