本篇文章整理了学习Python中用模块和填过的坑,希望我整理的内容对大家有所帮助。

读取excel表格xlsl文件

#读取xlsl文件到列表
import xlrd
def read_xlsl(filename):    #filename为文件名称
    excel=xlrd.open_workbook('{0}'.format(filename))
    # 获取第一个sheet
    table = excel.sheets()[0]   # 这儿的0为excel文件中sheet的索引(第1个)
    # 打印第i行数据
    # print(sheet.row_values(i))
    # 打印第j列数据
    # print(sheet.col_values(j))
    rows_count=table.nrows    #行数
    data_list=[]
    for i in range(0,rows_count):
        # print(table.row_values(i))
        data_list.append(table.row_values(i))
    # print(data_list[0])
    return data_list

或者读取到生成器之中

#读取xlsl文件到列表
import xlrd
def read_xlsl(filename):    #filename为文件名称
    excel=xlrd.open_workbook('{0}'.format(filename))
    # 获取第一个sheet
    table = excel.sheets()[0]   # 这儿的0为excel文件中sheet的索引(第1个)
    rows_count=table.nrows    #行数
    for i in range(0,rows_count):
        yield table.row_values(i)

读取csv文件

# 读取csv文件到列表之中
import csv
def read_csv(file_name):
    with open(file_name) as f:
        csv_reader = csv.reader(f)
        data_list = [a_line for a_line in csv_reader]
    return data_list

或者读取csv文件到生成器之中

#读取csv文件到生成器之中
def read_csv(file_name):
    with open(file_name) as f:
        csv_reader = csv.reader(f)
        for a_line in csv_reader:
            yield a_line

将列表集写入到csv文件

#写入到csv文件
import csv,datetime
# 写入到csv 文件的函数
def csv_writer_list(key_word,data_list):
    # do_you_really_fuck_know_list = list(set(know_list) & set(data_list))
    # print(len(do_you_really_fuck_know_list))
    with open('{0}_{1}.csv'.format(key_word,datetime.datetime.now().strftime("%Y_%m_%d_%H_%M_%S")),\
                                     'w', newline='',encoding='utf-8') as f:
        writer = csv.writer(f)
        for a_line in data_list:
            writer.writerow(a_line)    # a_line 为一个列表

示例:

# 一个简单的小栗子
data_list = [[1,2,3],[4,5,6],[7,8,9]]
csv_writer_list('数字示例',data_list)

判断一个字符串中是否包含中文字符

# 是否包含中文字符 是:True ; 否:False
import re
zhPattern = re.compile(u'[\u4e00-\u9fa5]+')
def has_chinese(a_string):
    if zhPattern.search(a_string):
        return True
    else:
        return False

几天之前或后的日期(比如三天之前是几年几月几号)

# 返回几天前或后的日期
import datetime
def the_start_date(days_to_reduce = 0 , ago = True):
    '''
    :参数 days_to_reduce: 天数
    :参数 ago: True代表几天前的日期,False代表几天后的日期
    :返回: 格式类似于:‘2017-05-30’的字符串
    '''
    today_time = datetime.date.today()  #.strftime("%Y-%m-%d") # 今天的日期
    dec_days_to_date = datetime.timedelta(days=days_to_reduce)
    if ago:
        start_day = today_time - dec_days_to_date
    else:
        start_day = today_time + dec_days_to_date
    return start_day

小栗子:

print(the_start_date(3))    #3天前的年月日
print(the_start_date(3,False))  #3天后的年月日

mysql 字符串转化为日期的两个函数:date_format() 与 str_to_date()

python字典排序

# 字典排序 (返回值为排列后的列表)
tuple_list = sorted(a_dic.items(), key = lambda x:x[1], reverse=True)  # 字典按照值排序 并翻转

BeautifulSoup中,调用tag的 find_all() 方法时,Beautiful Soup会检索当前tag的所有子孙节点,如果只想搜索tag的直接子节点,可以使用参数 recursive=False ;find_next()用于找到下一个标签,用法:当前soup元素.find_next(‘a’) # 找到当前标签下一个a元素

datetime时间与字符串之间相互转化

# datetime类型与字符串相互转化
import datetime,time

# 1:datetime -> string
datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")

# 2:string -> datetime
# 字符串格式或者日期不对 会报错
datetime.datetime.strptime("2017-5-30 18:20:10", "%Y-%m-%d %H:%M:%S")

# 3: 获取当前的时间
time.strftime( '%Y-%m-%d %X', time.localtime() )

mysql instr()和 find_in_set()的用法

select * from 表名称 where instr(列名称,'教育');
select * from 表名称 where find_in_set('教育',列名称) ;

判断目录是否存在,如果不存在,新建一个

# 判断目录是否存在,如果不存在,新建一个
import os
def is_folder_exist(folder_path):
    # folder_path = os.path.join(os.getcwd(),文件夹名称)
    # os.getcwd() 可以获得当前路径
    if not os.path.exists(folder_path):
        os.makedirs(folder_path)

从网络下载图片的模块

import os,requests
#下载图片到对应文件夹
def img_downloader(img_url,folder_path):
    """
    :参数 img_url: 图片路径
    :参数 folder_path: 保存在文件夹路径
    :返回值: 保存的图片的路径
    """
    if not img_url:
        return None
    img_name=img_url.split('/')[-1]
    #这地方最好判断目录是否存在 这里就不做判断了
    filename=os.path.join(folder_path,img_name)
    #声明header,伪装成浏览器
    headers={"user-agent":"Mozilla/5.0 (windows NT6.1;WOW64 ; rv:42 ) Gecko/20100101 Firefox/42.0"}
    session_req=requests.session() #构造一个兼容cookie的请求
    image=session_req.get(url=img_url,headers=headers,verify=False) #向url发送get请求,获取整个页面,verify=False排除ssl认证
    # image=session_req.get(img_url,verify=False)
    try:
        with open(filename ,"wb") as img:
            # print(image.content)
            img.write(image.content)
            # return
    except IOError:
        print("IO Error\n")
        return
    return filename

一个小栗子:下载图片到当前路径下

# 下载图片到当前路径下
a = img_downloader('http://www.ziyoubaba.com/wp-content/uploads/2016/03/house.jpg',os.getcwd())
print(a)

判断sql数据库表中某列中是否有某个值

# 判断sql数据库表中某列中是否有某个值
def is_in_db(cur, table_name, col_name , the_value):
    sql = "select count(*) from table_name where col_name= {0}".format(the_value)
    cur.execute(sql)
    result_raw = cur.fetchone()
    number = result_raw[0] if result_raw else 0
    if number == 0:
        return False    # 不存在
    else:
        return True    # 存在

sql语句中去除 None

# 不重要(请不要看这一条)
sql = sql.replace("'None'", 'null').replace('None', 'null')

数据库查询重复

select id,count(*) total from 表 group by 字段 having total>1;

可以获取本机的ip地址的网站

"""
http://httpbin.org/ip
http://httpbin.org/get
http://icanhazip.com/
https://api.ip.sb/jsonip
http://ip.chinaz.com/getip.aspx
"""

待补充….