目录标题
- 1、对多种日期格式进行标准化
- 2、实现英文分词计算词频-re.split、value_counts()
- 3、中文文章分词
- 4、统计《鹿鼎记》小说中的人名
- 5、用1234能组成多少个互不相同且无重复数字的三位数
- 6、两个矩阵相加
- 7、用逗号分隔列表-join
- 8、在升序的序列中插入一个数---重要
- 9、对任意给的10个数字进行排序--重要
- 10、将数组逆序输出-实现reverse
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)