独书先生 Menu

python处理excel之excel单元格内容首字符去除

需求

excel首列的单元格内容,首字符去除,如何做?

思路

使用 openpyxl 第三方库,打开excel,首字符去除,使用字符串截取方法取得除了第一个字符外的字符str[1:],再赋值回去,保存excel

代码

演示处理 A2:A5 单元格的内容

from openpyxl import Workbook
from openpyxl import load_workbook

wb = load_workbook(filename = 'workbook1.xlsx')

sheet_ranges = wb['Sheet1']

rangeColumn = range(2,6)
for i in rangeColumn:
    cell = "A" + str(i)
    sheet_ranges[cell] = str(sheet_ranges[cell].value)[1:]

wb.save("workbook2.xlsx")

扩展

根据示例代码,可以自行扩展为更通用的方法,比如循环A列单元格的值,一直取到空值停止,这样就可以处理多个不同的excel了。

如何安装pip | win10/python3

1.如何执行.py文件

Step1:指定目录下开启cmd ,假设改目录下有一个py文件: index.py

Step2:cmd中输入: python index.py

2.如何安装pip

Step1: 打开https://bootstrap.pypa.io/get-pip.py

Step2: 右击页面–另存为–保存到任何地方

Step3: 执行 python get-pip.py

即安装成功!
请开始愉快的使用pip安装你想要的库吧!

3.如何使用pip?

Step1: cmd 管理员运行

Step2: 输入 pip install packageName , 国内慢的话,使用豆瓣源: pip install packagename -i https://pypi.doubanio.com/simple

https://appsoftea.com/zh/how-to-install-pip/

本文参考自https://pip.pypa.io/en/stable/installing/

微信自动定时发送消息python

Step1: 使用pip安装依赖包:

pip install wxpy
pip install requests

Step2: 编写sentWechatMessage.py文件

from __future__ import unicode_literals
from threading import Timer
from wxpy import *
import requests
import random
bot = Bot()
# linux执行登陆请调用下面的这句
#bot = Bot(console_qr=2,cache_path="botoo.pkl")
def get_news():

    """获取金山词霸每日一句,英文和翻译"""
    url = "http://open.iciba.com/dsapi/"
    r = requests.get(url)
    content = r.json()['content']
    note = r.json()['note']
    return content, note

def send_news():
    try:
        contents = get_news()
        # 你朋友的微信名称,不是备注,也不是微信帐号。
        my_friend = bot.friends().search('A LUCKY MOMENT')[0]
        my_friend.send(contents[0])
        my_friend.send(contents[1])
        my_friend.send(u"哈哈哈哈哈")
        # 每86400秒(1天),发送1次
        t = Timer(10, send_news)
        # 为了防止时间太固定,于是决定对其加上随机数
        # ran_int = random.randint(0,100)
        # t = Timer(86400+ran_int,send_news)

        t.start()
    except:

        # 你的微信名称,不是微信帐号。
        my_friend = bot.friends().search('@润泽@')[0]
        my_friend.send(u"今天消息发送失败了")

if __name__ == "__main__":
    send_news()

Step3: 执行py文件

python sentWechatMessage.py

参考自https://blog.csdn.net/qq_29027865/article/details/81488654,感谢!

python开启本地Web服务器

<img class="wp-image-373 size-full" src="https://dushusir.com/wp-content/uploads/2018/06/python_web_server.png" alt="python_web_server" width="600" height="300" /> python_web_server

1.安装python3.6

  1. 在相应文件目录地址栏敲击cmd

3.输入:python -m http.server

4.保证本地目录包含index.html之类的首页文件,谷歌浏览器地址栏输入:http://localhost:8000/即可访问

 

注意:(1)默认端口 8000,如果想要自定义端口如2333,使用 python -m http.server 2333

(2)如果电脑里已有python 2.X版本,而你运行的也是python 2.X版本, 则需要使用 命令:
python -m SimpleHTTPServer
(3) 如果提示: ”python” 不是内部或外部命令,也不是可运行的程序
或批处理文件,则按下列步骤操作:

[1]使用系统目录方式进入cmd(win+R==>cmd)

[2]输入python 确认环境变量已配置,未配置的去配置Python环境变量

[3]cd到当前目录下(如:cd /d D:\Code)

[4]重新输入python -m http.server即可

 

Python初学者笔记(5)-简单的通讯录

要求:

编写一个简单的通讯录

1、通讯录包含至少包含姓名、电话号码、电子邮箱;2、通讯录的信息能够保存在本地磁盘;3、通讯录查找特定人员的信息;4、通讯录能够修改特定人员的信息;5、通讯录能够删除特定人员的信息;6、通讯录能完全显示所有人的信息

 

方法:Python 2.7.9 / Windows

# -*- coding: gbk -*-

import os,sys
import cPickle as p

#判断通讯录是否存在,不存在则创建通讯录
if os.path.exists('contacts.dat')==False:
    f = file('contacts.dat','wb')
    temp = {'total':0}
    p.dump(temp,f)
    f.close()
    print "\n本地磁盘尚无通讯录,新通讯录创建成功!\n"
else:
    pass

#添加联系人
def add():
    f = file('contacts.dat','rb')
    a = p.load(f)
    f.close()
    name = raw_input('请输入所要添加联系人的姓名:')
    if a.has_key(name):
        print "\n联系人已存在,添加失败!请改名~"
    else:
        tel = raw_input('请输入电话号码:')
        email = raw_input('请输入所要添加联系人的电子邮件(example@example.com):')
        list = [tel,email]
        information = {name:list}
        a['total'] += 1
        a.update(information)
        f = file('contacts.dat','wb')
        p.dump(a,f)
        f.close()
        print '添加成功!'

#显示所以联系人
def showall():
    f = file('contacts.dat','rb')
    a = p.load(f)
    print "一共有{}个联系人.\n".format(a['total'])
    print "{:<8}\t{:<15}\t{:<30}".format('姓名','电话号码','电子邮箱')
    for key in a.keys():
        if key != 'total':
            print "{:<8}\t{:<15}\t{:<30}".format(key,a[key][0],a[key][1])
    f.close()

#退出通讯录
def exit():
    sys.exit()

#查找
def search(name):
    f = file('contacts.dat','rb')
    a = p.load(f)
    if a.has_key(name):
        print "{}的号码是:{}".format(name,a[name][0])
        print "{}的电子邮箱是:s{}".format(name,a[name][1])
    else:
        print "联系人不存在!"
    f.close()

#删除
def delete(name):
    f = file('contacts.dat','rb')
    a = p.load(f)
    f.close()
    if a.has_key(name):
        a.pop(name)
        a['total'] -= 1
        f = file('contacts.dat','wb')
        p.dump(a,f)
        f.close()
        print "删除成功!"
    else:
        print "联系人不存在!无法删除!"

#修改
def modify(name):
    f = file('contacts.dat','rb')
    a = p.load(f)
    f.close()
    if a.has_key(name):
        tel = raw_input("请输入修改后的号码:")
        a[name][0] = tel
        email = raw_input("请输入修改后的邮箱:")
        a[name][1] = email
        f = file('contacts.dat','wb')
        p.dump(a,f)
        f.close()
        print "修改成功!"
    else:
        print "联系人不存在!"

#界面
def menu():
    print
    print "****************************"
    print "     显示菜单提示信息:*"
    print "     显示所有联系人:0"
    print "     查找联系人:1"
    print "     添加联系人:2"
    print "     删除联系人:3"
    print "     更改联系人资料:4"
    print "     退出通讯录:5"
    print "****************************"

#主程序
while True:
    menu()
    x=raw_input("\n请输入您的选择菜单号:")
    if x == '2':
        add()
        continue
    if x == '0':
        showall()
        continue
    if x == '5':
        print "谢谢使用!"
        exit()
        continue
    if x == '1':
        name = raw_input("请输入所要查找的联系人姓名:")
        search(name)
        continue
    if x == '3':
        name = raw_input("请输入所要删除的联系人姓名:")
        delete(name)
        continue
    if x == '4':
        name = raw_input("请输入所要修改的联系人姓名:")
        modify(name)
        continue
    if x == '*':
        menu()
    else:
        print "输入的选项不存在,请重新输入!"
        continue

结果:

>>>

****************************
显示菜单提示信息:*
显示所有联系人:0
查找联系人:1
添加联系人:2
删除联系人:3
更改联系人资料:4
退出通讯录:5
****************************

其余功能显示正常。

 

说明:Windows平台下,开头声明# -*- coding: gbk -*-显示中文正常

本来网上查询中文乱码问题,应该是使用# -*- coding: utf-8 -*-的开头声明,后发现这个声明不管用,后改用gbk起作用。

更深入的内容有待后续研究,欢迎大家讨论!

 

源自:DuShuSir.com

Python初学者笔记(4):Python实现输入生日显示对应的生肖和星座

Python实现输入生日显示对应的生肖和星座。已知1972年是鼠年,只要可以查1972年以后的日期就可以。下图是星座对应表。
 %e6%98%9f%e5%ba%a712
# -*- coding:utf-8 -*-

def sx(year):
    y = (year-1972)%12 #对12取余
    return shx[y] #从字典shx里依次取对应的生肖,如:1972即余数0,取“鼠”
def xz(month,date):
    d = (20,19,21,20,21,22,23,23,23,24,23,22) #按日期顺序把每个月的分隔星座的日期列出来,从水瓶座(1月)开始
    c = ("摩羯座","水瓶座","双鱼座","白羊座","金牛座","双子座","巨蟹座","狮子座","处女座","天秤座","天蝎座","射手座")
    # 有了列表d的分隔日期,对应在此分隔日期之前的星座写入列表c,如:第一个水瓶座的20号之前是摩羯座
    if date &amp;lt; d[month-1]: #如果是1.19号,即取d中1月份的20
        return c[month-1] #日期在20号之前,即取对应到c的摩羯座
    else:
        return c[month] #否则就是20号之后,下一个水瓶座

shx = {0:"鼠",1:"牛",2:"虎",3:"兔",4:"龙",5:"蛇",6:"马",7:"羊",8:"猴",9:"鸡",10:"狗",11:"猪"}
sr = raw_input("请输入您的生日(格式:1999.09.09):")
t = sr.split(".") #切片,把sr以“.”分割,变成3个字符串
year = int(t[0])
month = int(t[1])
date = int(t[2])

print "您的生肖是:"+sx(year)
print "您的星座是:"+xz(month,date)
 Result
>>>
请输入您的生日(格式:1999.09.09):1992.11.24
您的生肖是:猴
您的星座是:射手座

Python初学者笔记(3):输出列表中的奇数/奇数项,字符串中的偶数项,字符串大小写转换

【1】a=[8,13,11,6,26,19,24]
1)请输出列表a中的奇数项
2)请输出列表a中的奇数

解:1)

a=[8,13,11,6,26,19,24] 
print a[::2]

Result:
>>>
[8, 11, 26, 24]

2)

a = [8,13,11,6,26,19,24]
b = []
for item in a:
    if item%2 !=0:
        b.append(item)
    else:
        continue
print b

Result:
>>>
[13, 11, 19]

Continue reading…

Python初学者笔记(2):阿拉伯数字转换成中文大写

题:输入一个数字,转换成中文大写的写法

可运行的程序(Python 2.7.9):

# -*- coding: utf-8 -*- #在python2的py文件里面写中文,必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码
dic_num={"0":u"零","1":u"壹","2":u"贰","3":u"叁","4":u"肆","5":u"伍","6":u"陆","7":u"柒","8":u"扒","9":u"玖"}
dic_unit={0:u"",1:u"拾",2:u"佰",3:u"仟",4:u"万"}

flag = True

while flag:#保证程序能反复运行
    shu = []
    big = ''
    num = raw_input("请输入数字(范围在1~99999之间),若输入q则退出程序:".decode('utf-8').encode('gbk'))
    if num == 'q' or num == 'Q':
        flag = False
    elif int(num) < 1 or int(num) > 99999:
        print "错误!请输入1~99999之间的数字!\n".decode('utf-8').encode('gbk')
        continue
    else:
        listnum = list(num)
        lennum = len(listnum)-1
        for item in listnum:
            shu.append(dic_num[item])#先取输入数字中的第一个数对应的中文大写加到shu列表里,后续循环
            shu.append(dic_unit[lennum])#例:4位数就取dic_unit中3对应的“仟”加到shu的第一个数字后面,后续循环
            lennum -=1
        big = ''.join(shu)
    print big.encode('gbk')
    print "\n"

注:刚刚学习的初级程序写法,有很多不全的地方,比如:1.输入“082”开头是0的数字一样会输出“零佰扒拾贰”,应该需要更多的判断语句;2.输入“034354”会直接报错,应该没有加异常处理造成的结果。

后续会继续学习,欢迎大神补充更完善的写法。

Python初学者笔记(1):打印出斐波那契数列的前10项

问题:斐波那契数列(意大利语: Successione di Fibonacci),又称黄金分割数列、费波那西数列、费波拿契数、费氏数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、……在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*),用文字来说,就是斐波那契数列列由 0 和 1 开始,之后的斐波那契数列系数就由之前的两数相加。特别指出:0不是第一项,而是第零项。

方法:Python2.7.9

a=0
b=1
print a
print b
i=1
while i&lt;9:
 c=a+b
 print c
 a=b
 b=c
 i+=1

运行结果:

python