python刷题-关于分词词频、数组排序,数组插数的题

1、对多种日期格式进行标准化

#目标:2021-05-28
content = """
白日2021/05/26依山尽,黄河2021.05.27入海流。
欲穷千05-28-2020里目,更5/29/2020上一层楼。
"""
import re
#只能一样一样的替换
content = re.sub(r"(\d{4})/(\d{2})/(\d{2})",r"\1-\2-\3",content) #正则中括号,\1
print(content)
content = re.sub(r"(\d{4})\.(\d{2})\.(\d{2})",r"\1-\2-\3",content)
print(content)
content = re.sub(r"(\d{2})-(\d{2})-(\d{4})",r"\3-\1-\2",content)
print(content)
content = re.sub(r"(\d{1})/(\d{2})/(\d{4})",r"\3-0\1-\2",content)
print(content)

2、实现英文分词计算词频-re.split、value_counts()

分词:把每个单词提取出来-re.split
分隔符:空格,逗号,问号,换行号,斜线
计算词频:value_counts()

import re
with open("./wendang.txt") as fin:
	content = fin.read()

#print(content.split()) #直接split()试试,有些单词没分出来
words = re.split(r"[\s.()-?]+",content)#将分隔符都写入其中,\s空格,+一个或多个
print(words) #都拆分出来了
#下面计算词频
import pandas as pd
print(pd.Series(words).value_counts()[:20])

3、中文文章分词

中文分词库-jieba
思路:先把特殊符号替换为空,然后jieba.cut进行分词

content = """
春姑娘悄悄的来到了我们校园!
绿油油的小草争着抢着从地下探出头来,微分轻轻一吹,柳树就晃动着自己的秀发。
花园里各种各样的花儿都开了
"""
import jieba
import re
content = re.sub(r"[\s。...,!、]","",content) #中文中对特殊符号的处理是先替换掉
word_list = jieba.cut(content)
print(list(word_list))

4、统计《鹿鼎记》小说中的人名

思路:
1,读取文本
2,判断词性:posseg.cut(content)
3,是人名nr则加载进列表words中
4,统计词频,pd.Series(words).value_counts()

content = "李明喜欢韩梅梅,他俩早恋了"
import jieba.posseg as posseg
for word,flag in posseg.cut(content): 
	print(word,flag)#输出分词和其对应词性,nr对应人名

在这里插入图片描述

import jieba.posseg as posseg
with open("./鹿鼎记.txt") as fin:
	content = fin.read()
words = []
for word,flag in posseg.cut(content): 
	if flag == "nr":
		words.append(word)

import pandas as pd
print(pd.Series(words).value_counts()[:20])

5、用1234能组成多少个互不相同且无重复数字的三位数

l = [1,2,3,4]
for i in l:
	for j in l:
		for z in l:
			if i != j and j!=z and i!=z:
				print(a,b,c,sep="")

6、两个矩阵相加

x = [
[12,3,4],
[2,3,4],
[3,6,7]]
y = [
[7,8,9],
[4,8,4],
[9,1,7]]
y = [
[0,0,0],
[0,0,0],
[0,0,0]]

for i in range(3):
	for j in range(3):
		z[i][j] = x[i][j]+y[i][j]

for i in z:
	print(z)

7、用逗号分隔列表-join

strs = “python”
想输出: p,y,t,h,o,n

strs = "python"
result = ",".join(strs)
print(result)

8、在升序的序列中插入一个数—重要

思路:
先完整输出,找该插入的位置,挪位置,输出

a = [1,4,6,9,13,16,19,28,40,100,0]
print("before:")
for i in range(0,len(a)-1):print(a[i],end=" ")
print()
num = int(input("请输入数字:"))

local = 0
for i in range(len(a)-2,-1,-1):
	if number>a[i]:
		local = i+1
		break
print(local)
#i in range(a,b)是取不到b的
for i in range(len(a)-1,local-1,-1): #先移后面的再移动前面的,所以-1
	a[i]=a[i-1]
print(a)

在这里插入图片描述

9、对任意给的10个数字进行排序–重要

一个乱序的数组–要进行排序
前面有序区,后面无序区
在无序区中找出最小的值,放进有序区中去

a = [3,5,2,7,4,1]
for i in range(len(a)):
	min = i
	for j in range(i+1,len(a)):
		if a[j]< a[min]:
			min=j
	a[i],a[min] = a[min],a[i]
print(a)

10、将数组逆序输出-实现reverse

a = [1,2,3,4,5,6]
for i in a[::-1]:
	print(i,end=" ")

对应位置的数进行交换

a = [1,2,3,4,5,6]
for i in range(0,(len(a)-1)//2):
    temp = a[i]
    a[i] =a[len(a)-i-1]
    a[len(a)-i-1] = temp
print(a)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值