Python学习笔记(学习过程中遇到的问题及解决方法)

本文介绍了Python编程中的一些实用技巧,如调整递归深度、读取文件方法的区别、判断文件是否存在、正则表达式去除字符串内容、统计中文词频、生成词云以及自定义分词字典。同时,针对词云乱码问题给出了解决方案,并展示了如何往jieba分词库添加自定义字典以提升分词准确性。
摘要由CSDN通过智能技术生成

1.python递归深度调整

在执行new_data = copy.deepcopy(data)
报错:maximum recursion depth exceeded while calling a Python object
原因:python默认的递归深度是很有限的
解决:加入如下代码,手动调整递归深度

import sys

sys.setrecursionlimit(100000)

2.python读取文件read()、readline()、readlines()的区别

问题:执行result = file.readlines()时,输出result发现开头和结尾有[’…’]
原因:readlines()方法是以列表的形式返回读取结果的

read()、readline()、readlines()的区别
read() 一次性读取文本的所有内容,以字符串的形式返回。
readline() 只读取文本的第一行内容,以字符串的形式返回。
readlines() 读取文本所有内容,以list列表形式返回,包括\n和空格。

3.python判断文件是否存在

问题:将数据写入csv文件时,只有第一次写入时需要写入表头,第二次以后就不需要写入表头,故需要判断文件是否存在
解决:

import os
os.path.exists('xxx/xxx/xxx') 

通过以上代码返回True或False,True表示文件存在,False表示文件不存在

4.python去除字符串中指定字符之间的内容

例子: sen = ‘《活着》讲述一个人一生的故事[1],这是一个历尽世间沧桑和磨难老人的人生感言[2],是一幕演绎人生苦难经历的戏剧[3][4]。’
目的:去除‘[’和‘]’之间的内容

import re

sen = '《活着》讲述一个人一生的故事[1],这是一个历尽世间沧桑和磨难老人的人生感言[2],是一幕演绎人生苦难经历的戏剧[3][4]。'
print(sen)
r = re.compile('\[(.*?)\]')
sen = re.sub(r, '', sen)
print(sen)

结果:
在这里插入图片描述

5.python统计中文词频

利用jieba分词,然后将词存放至字典,排序后输出

txt = open('xxx.txt', "r", encoding='utf-8').read()
words = jieba.lcut(txt)
counts = {}
for word in words:
    if len(word) == 1:
        continue
    else:
        counts[word] = counts.get(word, 0) + 1
items = list(counts.items())
items.sort(key=lambda x: x[1], reverse=True)
# print(items)
for i in range(len(items)):
    word, count = items[i]
    print("{0:<10}{1:>5}".format(word, count))

6.python生成词云

def getText(file):
    with open(file, 'r', encoding='UTF-8') as txt:
        txt = txt.read()
        jieba.lcut(txt)
    return txt

def getWordCloud(filename):
    txt = getText(filename+'.txt')
    wordclouds = wordcloud.WordCloud(width=1000, height=800, margin=2).generate(txt)
    wordclouds.to_file('{}.png'.format(filename))

    os.system('{}.png'.format(filename))

如果遇到生成的生成的词云中文乱码问题,我们需要找到wordcloud.py文件
在这里插入图片描述
将这里的字体换成自己想要的字体,可以通过C:\Windows\Fonts找到Windows自带的字体文件,并把字体文件拷贝到下图目录当中
在这里插入图片描述

7.python分词,往jieba分词库中加入字典,提高分词准确率

def fenci(inFile, outFile, dictPath):
    """
    利用自己创建的字典,加入到jieba分词库中,提高分词准确率
    :param inFile: 输入的txt文件
    :param outFile: 输出的分词后的文件
    :param dictPath: 字典
    :return:
    """
    out = open(outFile, 'a', encoding='utf-8')
    fenci = open(inFile, "r", encoding="utf-8").read()
    jieba.load_userdict(dictPath)
    fenci = jieba.lcut(fenci)
    for word in fenci:
        out.write(word + ' ')

注意:字典中每个词要以换行符进行分割
另外,jieba.cut生成的是一个生成器,generator,也就是可以通过for循环来取里面的每一个词。jieba.lcut 直接生成的就是一个list。

8.python正则表达式替换问号

import re
TEXT = '前??言,参?考?文?献'
strList = re.findall(r'\?+[\u4e00-\u9fff]', TEXT)
for s in strList:
    TEXT = TEXT.replace(s, ''+s[-1])
print(TEXT)

输出结果:前言,参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值