Python开发中一些技术细节

Python开发中一些技术细节

 

1    Python生成word

1.1    python-docx

python-docx是一个可以读写word文档的python库,

需要安装:pip installpython-docx

1.1.1 demo

#coding=utf-8
from  docx import  Document
from  docx.shared import Pt
from  docx.oxml.ns import qn
from docx.shared import Inches
def openDoc(wordname,savename):
    #打开文档
    document = Document()
    #加入不同等级的标题
    document.add_heading('aerszvfdgx',0)
    document.add_heading(u'二级标题',1)
    document.add_heading(u'二级标题',2)
    #添加文本
    paragraph = document.add_paragraph(u'添加了文本')
    #设置字号
    run = paragraph.add_run(u'设置字号')
    run.font.size=Pt(24)
    #设置字体
    run = paragraph.add_run('Set Font,')
    run.font.name='Consolas'
    #设置中文字体
    run = paragraph.add_run(u'设置中文字体,')
    run.font.name=u'宋体'
    r = run._element
    r.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    #设置斜体
    run = paragraph.add_run(u'斜体、')
    run.italic = True
    #设置粗体
    run = paragraph.add_run(u'粗体').bold = True
    #增加引用
    document.add_paragraph('Intense quote', style='Intense Quote')
    #增加有序列表
    document.add_paragraph(
        u'有序列表元素1',style='List Number'
    )
    document.add_paragraph(
        u'有序列别元素2',style='List Number'
    )
    #增加无序列表
    document.add_paragraph(
        u'无序列表元素1',style='List Bullet'
    )
    document.add_paragraph(
        u'无序列表元素2',style='List Bullet'
    )
    #增加图片(此处使用相对位置)
    #document.add_picture('jdb.jpg',width=Inches(1.25))
    #增加表格
    table = document.add_table(rows=3,cols=3)
    hdr_cells=table.rows[0].cells
    hdr_cells[0].text=u"第一列"
    hdr_cells[1].text=u"第二列"
    hdr_cells[2].text=u"第三列"
    hdr_cells = table.rows[1].cells
    hdr_cells[0].text = '2'
    hdr_cells[1].text = 'aerszvfdgx'
    hdr_cells[2].text = 'abdzfgxfdf'
    hdr_cells = table.rows[2].cells
    hdr_cells[0].text = '3'
    hdr_cells[1].text = 'cafdwvaef'
    hdr_cells[2].text = 'aabs zfgf'
    #增加分页
    document.add_page_break()
    #保存文件
    document.save(savename)

 

2    参考

使用python-docx生成Word文档:

http://www.jianshu.com/p/1f60cdd9655a

 

3    python实现switch

casefile=['a', 'b', 'c', 'd', 'e', 'f']
for test in casefile:
    if   test == 'a':
        print test
    elif test == 'b':
        print test
    elif test == 'c':
        print test
    elif test == 'd':
        print test
    elif test == 'e':
        print test
    else : 
        print '...'

 

4    PyCharm列选择功能

PyCharm的ColumnSelection Mode提供了列选择功能。

启动:

在当前文件右键->ColumnSelection Mode->用鼠标垂直选择文本

快捷键:Alt + Shift + Insert

很好用的一个功能。

 

5    Python求一组数的平均值

l=[1, 2, 3, 4, 5, 4,3,2,2.34] #输入数字到数组中

sum(l)/len(l) #求平均数

"{:.3f}".format(sum(l)/len(l)) #求平均数,保留3位小数

 

6    python列表去除头尾

列表array:

去尾:array.pop(0)

去首部:del array[0]

 

7    python整型变成字符串

整数字符串转换为对应的整数

int('12')

小数字符串转换为对应小数

float('12.4')

数字转换为字符串

str(123.45)

ASCII码转换为相应字符

chr(97)

字符转换为响应ASCII码

ord('a')

 

8    空格隔开字符串变成列表

a='1 2 3'

a.split()

['1', '2', '3']

 

9    字符串列表变成整数列表

list=['1', '2', '3']

result=[ int(i) for i in list]

可以把['1', '2', '3']变成[1,2,3]

10                          python字典操作

D.clear()                             #移除D中的所有项  

D.copy()                              #返回D的副本  

D.fromkeys(seq[,val])  #返回从seq中获得的键和被设置为val的值的字典。可做类方法调用  

D.get(key[,default])    #如果D[key]存在,将其返回;否则返回给定的默认值None  

D.has_key(key)              #检查D是否有给定键key  

D.items()                            #返回表示D项的(键,值)对列表  

D.iteritems()                     #从D.items()返回的(键,值)对中返回一个可迭代的对象  

D.iterkeys()                       #从D的键中返回一个可迭代对象  

D.itervalues()                  #从D的值中返回一个可迭代对象  

D.keys()                             #返回D键的列表  

D.pop(key[,d])             #移除并且返回对应给定键key或给定的默认值D的值  

D.popitem()                   #从D中移除任意一项,并将其作为(键,值)对返回  

D.setdefault(key[,default])     #如果D[key]存在则将其返回;否则返回默认值

D.update(other)               #将other中的每一项加入到D中。  

D.values()                            #返回D中值的列表

动态地建立字典的一个字段

D2 = {}  

D2['name'] = 'Bob'  

D2['age']  =  40  

 

11                          python包含字符串

很好用呢。

site='abcde'

if 'abc' in site:

           print"ok"

 

12                          python计算字典健值数量

直接使用 len(dict) 即可实现。

13                          Python将字符串写到文件

file_perf = open('test.txt','w')
try:
    file_perf.write(data)
finally:
    file_object.close() 

 

14                          Python字典、列表、字符串相互

14.1          字典

dict = {'name': 'Zara','age': 7, 'class': 'First'}

#字典转为字符串,返回:<type 'str'>{'age': 7, 'name': 'Zara', 'class': 'First'}

print type(str(dict)), str(dict)

#字典可以转为元组,返回:('age', 'name','class')

print tuple(dict)

#字典可以转为元组,返回:(7, 'Zara', 'First')

print tuple(dict.values())

#字典转为列表,返回:['age', 'name','class']

print list(dict)

#字典转为列表

print dict.values

14.2          元组

tup=(1, 2, 3, 4, 5)

#元组转为字符串,返回:(1, 2, 3, 4, 5)

print tup.__str__()

#元组转为列表,返回:[1, 2, 3, 4, 5]

print list(tup)

#元组不可以转为字典

14.3          列表

nums=[1, 3, 5, 7, 8, 13, 20];

#列表转为字符串,返回:[1, 3, 5, 7, 8, 13,20]

print str(nums)

#列表转为元组,返回:(1, 3, 5, 7, 8, 13,20)

print tuple(nums)

#列表不可以转为字典

14.4          字符串

#字符串转为元组,返回:(1, 2, 3)

print tuple(eval("(1,2,3)"))

#字符串转为列表,返回:[1, 2, 3]

print list(eval("(1,2,3)"))

#字符串转为字典,返回:<type 'dict'>

print type(eval("{'name':'ljq','age':24}"))

15                          python修改文件中某一行

固定内容的一行,可以如下操作:

import re
file = open("filename", "w+")
data = file.read()
re.sub("content_in_file", "new_content", data)
file.write(data)
file.close()

或者如下操作:

16                          python替换字符中字符

a = 'hello word'

>>>a.replace('hello','ok')

 

17                          python打开文件方式解释

r只读,r+读写,不创建

w新建只写,w+新建读写,二者都会将文件内容清零

(以w方式打开,不能读出。w+可读写)

**w+与r+区别:

r+:可读可写,若文件不存在,报错;w+: 可读可写,若文件不存在,创建

以a,a+的方式打开文件,附加方式打开

(a:附加写方式打开,不可读;a+: 附加读写方式打开)

18                          python判断取反

可以使用 ~符号来实现。

19                          将空格变成逗号

cat word.txt | sed -i's/\s\+/,/g'

20                          python将字符串变成一个列表

a='123ssf,2312,2323122'

b=a.split(',')

即可。

 

21                          Mac系统中sed –i使用

需要加入一个备份文件例如:

sed -i bak'$s/,$//' hello.txt

这样原始文件会备份在hello.txtbak文件中。

22                          Sed替换某一行语法

 

sed -i '1s/aaa/bbb/' file针对file文件中的第1行,将其中的aaa替换为bbb

sed -i '/xxx/s/aaa/bb/g' file针对文件,找出包含xxx的行,并将其中的aaa替换为b

sed -i '1s/[#*]/bb/gp' file针对文件第1行,将其中的#号或是*号替换为bb

 

23                          shell算术运算

((i=$j+$k))    等价于 i=`expr$j + $k`
((i=$j-$k))     等价于   i=`expr$j -$k`
((i=$j*$k))     等价于   i=`expr$j \*$k`
((i=$j/$k))     等价于   i=`expr$j /$k`

 

24                          统一WORD中表格格式

1.       先把光标定位至表格开头处

2.       然后要录制宏,点击工具->宏->录制新宏…

3.       在表格开关处,按住shift,同时按→或↓或End键直至选中全部表格(鼠标将不能用来选择文本)。

4.       然后用鼠标修改格式了,在表格工具的设计、布局选项卡中将表格调整至你心怡的格式。

5.       点击工具->宏->停止录制。这样就将宏录制好了。

6.       然后选择表格,点击工具->宏->运行,就可以表的刷格式了。

 

25                          Python实现数字循环

    如下求和:

def sum():  

    sum = 0  

    x=1  

    while x < 101:  

        sum = sum + x  

        x+=1  

    return sum  

print(sum()) 

 

26                          C语言矩阵相乘手动输入矩阵

#include<stdio.h>

#include<stdlib.h>

#define M 100

int main(void)

{

    inti,j,k,matrix1[M][M],matrix2[M][M],row1,col1,row2,col2,matrix[M][M];  

    /*为需要相乘的两个矩阵赋值:*/

    printf("输入第一个矩阵的行数和列数:");

   scanf("%d%d",&row1,&col1);

    printf("输入第一个矩阵:\n");

    for(i=0;i<row1;i++){

        for(j=0;j<col1;j++){

           scanf("%d",&matrix1[i][j]);

        }

    }

    printf("输入第二个矩阵的行数和列数:");

   scanf("%d%d",&row2,&col2);

    printf("输入第二个矩阵:\n");

    for(i=0;i<row2;i++){

        for(j=0;j<col2;j++){

           scanf("%d",&matrix2[i][j]);

        }

    }

    /*初始化结果matrix:*/

    for(i=0;i<row1;i++){

        for(j=0;j<col2;j++){

            matrix[i][j]=0;

        }

    }

   

    if(col1!=row2){

        fprintf(stderr,"enputerror!");

        exit(EXIT_FAILURE);

    }

    printf("Theresult:\n");

    for(i=0;i<row1;i++){

        for(j=0;j<col2;j++){

            for(k=0;k<col1;k++){

               matrix[i][j]=matrix[i][j]+matrix1[i][k]*matrix2[k][j];

            }

        }

    }

 

    for(i=0;i<row1;i++){

        for(j=0;j<col2;j++){

            printf("%d",matrix[i][j]);

        }

        printf("\n");

    }

    return 0;

}

27                          python机器学习

用Python来编写机器学习,因为Python下有很多机器学习的库。

numpy,scipy,matplotlib,scikit-learn,分别是科学计算包,科学工具集,画图工具包,机器学习工具集。

numpy :科学运算,主要是矩阵的运算。提供数组。

scipy:主要是一些科学工具集,信号处理工具集  数值计算。

scikit-learn:大量机器学习算法。

matplotlib:画图工具

Ubuntu 下的安装

 

28                          Python实现UDP包发送接收

28.1 服务端

#coding=utf-8

from socket import * 

from time import ctime 

 

HOST = '' 

PORT = 20123 

BUFSIZ = 128 

ADDR = (HOST, PORT) 

#创建一个服务器端UDP套接字 

udpServer = socket(AF_INET, SOCK_DGRAM) 

#绑定服务器套接字 

udpServer.bind(ADDR) 

while True: 

    print 'waiting formessage...' 

#接收来自客户端的数据 

    data, addr =udpServer.recvfrom(BUFSIZ) 

#向客户端发送数据 

    udpServer.sendto('[%s] %s' %(ctime(), data), addr) 

    print '...received from andreturned to:', addr,'...data is ...',data

udpServer.close() 

 

28.2 客户端

#coding=utf-8

from socket import * 

HOST = '11.142.173.117' 

PORT = 20123 

BUFSIZ = 128 

ADDR = (HOST, PORT) 

#创建客户端UDP套接字 

udpClient = socket(AF_INET, SOCK_DGRAM) 

while True: 

    data = raw_input('>') 

    if not data: 

        break 

#向服务器端发送数据 

    udpClient.sendto(data,ADDR) 

#接收来自服务器端的数据 

    data, ADDR =udpClient.recvfrom(BUFSIZ) 

    print data 

    if not data: 

        break 

udpClient.close()

 

 

28.3 python发送二进制流

28.3.1                 客户端

#coding=utf-8

import socket

import os

import stat

import struct

 

MAX_PACK_SIZE = 100

DEST_IP = '11.142.173.117'

DEST_PORT = 20123

 

filename = raw_input("input filename")

 

filesize = os.stat(filename)[stat.ST_SIZE]

 

f = open(filename, "rb")

 

chList = []

for i in range(0, filesize):

    (ch,) =struct.unpack("B", f.read(1))

    chList.append(ch)

 

client = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )

 

packSize = 0

string = ""

args = []

for i in range(0, filesize):

    packSize = packSize + 1

    string = string +struct.pack("B", chList[i])

 

    #if (MAX_PACK_SIZE == packSizeor i == filesize - 1):

    if (i == filesize - 1):

    #string='hello'

        num=client.sendto(string,(DEST_IP, DEST_PORT))

    print num

        packSize = 0

        string = ""

client.close()

 

 

 

 

29                          Python环境配置

29.1 mysql-python安装时EnvironmentError: mysql_config not found

将mysql_config路径设置到PATH变量中。

例如:export PATH=$PATH:/usr/local/mysql/bin

如果没有mysql则安装mysql相关包。

 

29.2 FLASK依赖的包

 

可以先安装这些:

requirements.txt

supervisor
Flask
Flask-HTTPAuth
Flask-Login
Flask-Mail
Flask-Principal
Flask-Security
Flask-SQLAlchemy
Flask-WTF
pymongo
MySQL-python
requests
SQLAlchemy
Werkzeug
itsdangerous
passlib
pyparsing
xlrd
xlwt
oss2

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值