import jieba
import pandas as pd
import os
定义一个获取分词结果的函数,以列表形式返回:
def get_jieba_output(corpus_dataframe):
word_set=[] # 空列表
for i in corpus_dataframe[0]: # 因为地名信息是数据框的第一列
obj_list = i
for jie in jieba.cut(obj_list,cut_all=True):
if len(jie) <2: # 长度小于2的词忽略掉
pass
else:
if jie not in word_set: # 不添加重复项
word_set.append(jie)
else:
pass
word_list = obj_list.split(sep='|') # 因为原数据中省名、市名、区名等是由 | 分隔开的
for word in word_list:
if word not in word_set: # 不添加重复项
word_set.append(word)
else:
continue
return word_set
定义得到省及直辖市名的函数,返回一个相当于集合的列表:
def get_all_prov(corpus_dataframe):
prov_set=[]
for i in range(len(corpus_dataframe)):
obj_list=corpus[0][i]
word_list = obj_list.split(sep='|')
prov_name = word_list[0]
if prov_name not in prov_set:
prov_set.append(prov_name)
else:
continue
return prov_set
主函数:
if __name__ == '__main__':
'''这是根据已爬取的中国地域信息文本,利用jieba分词工具对其进行分词 '''
jieba_file="C:/Users/tkxlovecy99/Desktop/htmls/China_Geographic_Infomation_jieba"
# 创建文件夹保存接下来的各省直辖市的分词操作
try:
os.mkdir(jieba_file)
except:
pass
China_Geographic_Infomation="C:/Users/tkxlovecy99/Desktop/htmls/China_Geographic_Infomation.txt"
# 中国地名信息文本路径
corpus=pd.read_csv(China_Geographic_Infomation,sep='\n',header=None)
#读取信息以dataframe的形式保存
prov_name_set = get_all_prov(corpus)
for prov in prov_name_set:
filename = jieba_file+'/'+prov+'.txt'
print(filename)
obj_corpus = corpus[corpus[0].str.contains(prov)]
word_set = get_jieba_output(obj_corpus)
for word in word_set:
with open(filename,'a',encoding='utf8') as f:
f.write(word)
f.write('\n')
f.close()
数据情况如下:
北京市|市辖区|东城区|东华门街道办事处
北京市|市辖区|东城区|景山街道办事处
北京市|市辖区|东城区|交道口街道办事处
北京市|市辖区|东城区|安定门街道办事处
北京市|市辖区|东城区|北新桥街道办事处
北京市|市辖区|东城区|东四街道办事处
北京市|市辖区|东城区|朝阳门街道办事处
北京市|市辖区|东城区|建国门街道办事处
北京市|市辖区|东城区|东直门街道办事处
北京市|市辖区|东城区|和平里街道办事处
北京市|市辖区|东城区|前门街道办事处
北京市|市辖区|东城区|崇文门外街道办事处
北京市|市辖区|东城区|东花市街道办事处|
最终结果如下: