python 写到excel里乱码_(非常实用)python学习线路图及资料整合

本文提供了一条Python学习线路,包括语言入门、常用模块应用和实战项目。推荐了菜鸟教程和w3school作为学习资源,并特别介绍了Python在数据处理、爬虫、机器学习和自动化运维中的应用。分享了个人整理的工作台仓库,包含csv模块的中文乱码解决方案、爬取妹子图的代码等,旨在帮助学习者深入实践。
摘要由CSDN通过智能技术生成

90f5b396861c84812262c8083886de72.png

python作为一门解释性语言,语法简洁,上手较快,且第三方库较多,可以让设计者更专注于其代码逻辑和功能的设计。本贴描述的学习线路共分为以下几个部分:

1.python语言入门

这部分总结笔者自身的python学习路线,由于网上python学习资料较多,本贴不再重复罗列,而是进行合理推荐,同时,笔者更注重python语言在实际工程项目中的应用,所以把一些常用的模块使用方法进行总结,以代码的形式简单阐述。

首先,推荐两个比较不错的python自学网站:

菜鸟教程:https://www.runoob.com/python3

w3school:https://www.w3school.com.cn/python/index.asp

个人感觉第一个菜鸟教程上讲解的比较简单也比较基础,容易上手,笔者当时是花了差不多三天时间简单入门。初学者建议使用sublime text3编辑器,一款轻量级但对python友好。

学习语言主要还是看应用,笔者参与过大大小小各种python项目应用,细心总结提炼出常用模块使用方法,模块相关问题的解决方法等,且者配有使用案例,在新的项目开发中只需简单调用作适当修改即可,比较省时省力,它们是(不断更新中):

argparse
getopt
ast
atexit
autogui
crawler
csv
gitpython
json
pickle
pyqt5
logger
matplotlib
numpy
mysql
pandas
pyinstaller
re
redis
scikit-learn
scipy
smtp
snownlp
zipfile

以csv模块为例,首先会讲解csv文件的基本读、写操作,同时还提供了常见的csv文件中文乱码问题的解决方案,这些都是笔者实际项目中遇到的问题,csv文件demo代码如下:

#! /usr/bin/python3
# -*- encoding:utf-8 -*-

'''
this is a csv module usage
'''

import csv

'''
关于CSV文件中文乱码的问题,一般我们喜欢用UTF-8来存储,这里一定要选择带bom格式的UTF-8
因为Excel在读取csv的时候是通过读取文件头上的bom来识别编码的,如果文件头无bom信息,则默认按照unicode编码读取。
而我们生成csv的平台不一定遵循微软的bom协议,导致如果输出非unicode编码的csv文件(例如utf-8),
并且没有生成bom信息的话,Excel自动按照unicode编码读取,就会出现乱码问题了。
'''

# 写文件:
csvfile = open('test.csv', 'w', encoding='GBK', newline='')
writer = csv.writer(csvfile)
# 写入头
writer.writerow(['序号', '角色', 'QQ昵称', '群昵称', 'QQ号', '性别', 'Q龄', '入群时间', '等级', '积分', '最后发言'])
# 写入内容
writer.writerow([43, "普通用户", "XXXX", "752138607", "男", 13, "2020-05-27 17:46:43",2,6,"2020-06-20 00:10:05"])
# 关闭文件
csvfile.close()

with open('test.csv', 'r', encoding='GBK') as csvfile:
    reader = csv.reader(csvfile)

    for row in reader:
        print(row)

2.python应用

有了语言基础,就可以根据实际工作需要选择一个方向继续下去,笔者总结了python语言在数据采集(网络爬虫)、经典数据分析处理(分类、聚类、回归、降维)、机器学习(深度学习、强化学习)、自动化运维等领域的应用。

笔者最早涉及的是python爬虫领域,当时只是觉着好玩,研究不同类型网站的爬取方法,公众号文章、某群成员信息等,当时爬的最多的是妹子图网站(各位看官先不要着急,代码已入库,下面会给出路径),后来笔者由于职业规划,选择了人工智能方向,于是先后学习了数据分析、机器学习等相关知识,依稀记得当时学的机器学习必修课MNIST数字手写体识别教程,一位日本工程师写的《python深度学习-鱼书》,再到后来如tensorflow应用相关、与此同时,理论基础也要有,又顺次补充了《机器学习-西瓜书》、《统计学方法》等,一路走来,代码实践从未停止过,算法这东西还是要自己亲自实践一下,理解的才更深刻,于是形成目前作者整理的python资料库,我称之为workbench,即工作台的意思,平时项目开发也会基于这个工作台进行,它作为一个知识库,可以给我更多的参考,当然,我也在不断完善它。现在我把它分享给大伙,希望能帮助到更多朋友。目前该仓库有同步在gitee和github上,路径如下:

https://gitee.com/brainternet/workbench.git

https://github.com/brainternet/workbench.git

爬取煎蛋上妹子图的代码如下(仓库路径为workbenchmodulescrawlerjandan_spider_bs4

jandan_spider.py)

#! /usr/bin/python3
# -*- encoding:utf-8 -*-

import os
import sys

requirements = ['requests', 'beautifulsoup4', 'argparse']
site_packages = os.popen("pip list").read().split()
#print(site_packages)
for package in requirements:
    if not package in site_packages:
        cmd = r'pip install ' + package
        print(cmd)
        os.system(cmd)

#sys.exit()

import requests
from bs4 import BeautifulSoup
import argparse
import ast
import atexit

parser = argparse.ArgumentParser(description='Spider for jiandan.net')
parser.add_argument('--page', dest='page', action='store', default=5, type=int, help='max page number')
parser.add_argument('--dir', dest='dir', action='store', default='images', help='the dir where the image save')
args = parser.parse_args()

page = args.page
_dir = args.dir
if not os.path.exists(_dir):
    os.mkdir(_dir)
headers = {'referer': 'http://jandan.net/',
           'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0'}

image_cache = set()

if os.path.exists(".cache"):
    with open('.cache', 'r') as f:
        image_cache = ast.literal_eval(f.read(-1))


@atexit.register
def hook():
    with open('.cache', 'w+') as f:
        f.write(str(image_cache))


index = len(image_cache)


# 保存图片
def save_jpg(res_url):
    global index
    html = BeautifulSoup(requests.get(res_url, headers=headers).text, features="html.parser")
    for link in html.find_all('a', {'class': 'view_img_link'}):
        if link.get('href') not in image_cache:
            with open(
                    '{}/{}.{}'.format(_dir, index, link.get('href')[len(link.get('href')) - 3: len(link.get('href'))]),
                    'wb') as jpg:
                jpg.write(requests.get("http:" + link.get('href')).content)
            image_cache.add(link.get('href'))
            print("正在抓取第%s条数据" % index)
            index += 1


if __name__ == '__main__':
    url = 'http://jandan.net/ooxx'
    for i in range(0, page):
        save_jpg(url)
        ahref = BeautifulSoup(requests.get(url, headers=headers).text, features="html.parser").find('a', {'class': 'previous-comment-page'})
        if ahref is None:
            print('no more page')
            exit(0)
        else:
            url = "http:" + ahref.get('href')

大家可以尝试着运行一下,这里就不贴图了。

由于笔者个人时间和精力有限,虽然很用心地总结梳理,仍有疏漏之处,望各位看官谅解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值