python生成表格函数,Python表格

python 怎么生出成一个表格,并发送邮件

# -*- coding: utf-8 -*-

洞口网站建设公司创新互联公司,洞口网站设计制作,有大型网站制作公司丰富经验。已为洞口成百上千家提供企业网站建设服务。企业网站搭建\外贸网站制作要多少钱,请找那个售后服务好的洞口做网站的公司定做!

#程序名称:自动化缺陷报告脚本

#程序描述:实现从本地路径读取excel文件内容,并绘制HTML表格,将内容写入邮件正文区发送

#编写时间:2014.11.29-2014.12.4

#作者:刘琳泽

#解释环境:Windows 7家庭高级版 Python 2.7.8IDLE

#引入excel文档相关库

import xlrd

import os,time

#引入邮件相关库

import smtplib

from email.mime.text import MIMEText

from email.header import Header

import base64

#处理从excel中读取的float类型数据的类

#目前集成两种处理:(1)float到int型的转换(2)float到str型的转换,后续有需要可以增加方法以集成其他类型的转换

class judgeFloat:

def floatToInt(self,variable):

variable="%d"%variable

return variable

def floatToStr(self,variable):

variable=xlrd.xldate_as_tuple(variable,0)

variable=list(variable)

if variable[1]10:

variable[1]='0'+str(variable[1])

variable=str(variable[0])+str(variable[1])+str(variable[2])

return variable

#确定文档是否修改的函数:获取文档的修改时间与本地时间对比,不一致要求用户确认是否继续执行,一致则直接执行

def openFile(filename,address):

filetime=time.strftime("%Y/%m/%d",time.localtime(os.stat(address+filename).st_mtime))

local=time.strftime("%Y/%m/%d",time.localtime())

if filetime!=local:

single=input("文档今天还没有修改过,请确认是否继续?确认请输入1后点击回车,否则输入2点击回车。")

if single==1:

pass

elif single==2:

exit()

else:

print '您的输入有误!脚本即将结束。'

time.sleep(5)

exit()

else:

pass

#写邮件的函数

def mailWrite(filename,address):

header='htmlheadmeta http-equiv="Content-Type" content="text/html; charset=utf-8" //head'

th='body text="#000000"committed缺陷详情:table border="1" cellspacing="0" cellpadding="3" bordercolor="#000000" width="1800" align="left" tr bgcolor="#F79646" align="left" th标识/thth摘要/thth状态/thth优先级/thth严重性/thth标记/thth所有者/thth创建时间/thth修改时间/th/tr'

#打开文件

filepath=address+filename

book=xlrd.open_workbook(filepath)

sheet=book.sheet_by_index(0)

#获取行列的数目,并以此为范围遍历获取单元数据

nrows = sheet.nrows-1

ncols = sheet.ncols

body=''

cellData=1

for i in range(1,nrows+1):

td=''

for j in range(ncols):

#读取单元格数据,赋给cellData变量供写入HTML表格中

cellData=sheet.cell_value(i,j)

#调用浮点型转换方法解决读取的日期内容为浮点型数据的问题

if isinstance(cellData,float):

if j==0 and i0:

cellDataNew=judgeFloat()

cellData=cellDataNew.floatToInt(cellData)

else:

cellDataNew=judgeFloat()

cellData=cellDataNew.floatToStr(cellData)

else:

pass

tip='td'+cellData+'/td'

#并入tr标签

td=td+tip

tr='tr'+td+'/tr'

#为解决字符串拼接问题增设语句,tr从excel中读取出来是unicode编码,转换成UTF-8编码即可拼接

tr=tr.encode('utf-8')

#并入body标签

body=body+tr

tail='/table/body/html'

#将内容拼接成完整的HTML文档

mail=header+th+body+tail

return mail

#发送邮件

def mailSend(mail):

#设置发件人

sender = '***'

#设置接收人

receiver = '***@***.com'

#设置邮件主题

subject = '测试邮件,请忽略!'

#设置发件服务器,即smtp服务器

smtpserver = 'smtp.***.net'

#设置登陆名称

username = '***@***.net'

#设置登陆密码

password = '******'

#实例化写邮件到正文区,邮件正文区需要以HTML文档形式写入

msg = MIMEText(mail,'html','utf-8')

#输入主题

msg['Subject'] = subject

#调用邮件发送方法,需配合导入邮件相关模块

smtp = smtplib.SMTP()

#设置连接发件服务器

smtp.connect('smtp.***.net')

#输入用户名,密码,登陆服务器

smtp.login(username, password)

#发送邮件

smtp.sendmail(sender, receiver, msg.as_string())

#退出登陆并关闭与发件服务器的连接

smtp.quit()

#入口函数,配置文件地址和文件名

def main():

filename='Sheet1.xlsx'

address='d:/defectManage/'

openFile(filename,address)

mail=mailWrite(filename,address)

mailSend(mail)

#调用执行main函数

if __name__=="__main__":

main()

Python 数据处理(十八)—— HTML 表格

顶级 read_html() 函数可以接受 HTML 字符串、文件或URL,并将 HTML 表解析为 pandas DataFrames 列表。

注意 :即使 HTML 内容中仅包含一个表, read_html 也会返回 DataFrame 对象的列表

让我们看几个例子

读入 banklist.html 文件的内容,并将其作为字符串传递给 read_html

如果愿意,您甚至可以传入 StringIO 的实例

读取 URL 并匹配包含特定文本的表

指定一个标题行(默认情况下 th 或 td 位于 thead 中的元素用于形成列索引,如果 thead 中包含多个行,那么创建一个多索引)

指定索引列

指定要跳过的行数:

使用列表指定要跳过的行数( range 函数也适用)

指定一个 HTML 属性

指定应转换为 NaN 的值

指定是否保持默认的 NaN 值集

可以为列指定转换器。这对于具有前导零的数字文本数据很有用。

默认情况下,将数字列转换为数字类型,并且前导零会丢失。为了避免这种情况,我们可以将这些列转换为字符串

组合上面的选项

读取 to_html 的输出(会损失浮点数的精度)

当只提供了一个解析器时,如果解析失败, lxml 解析器会抛出异常,最好的方式是指定一个解析器列表

但是,如果安装了 bs4 和 html5lib 并传入 None 或 ['lxml','bs4'] ,则解析很可能会成功。

DataFrame 对象有一个实例方法 to_html ,它将 DataFrame 的内容呈现为 html 表格。

函数参数与上面描述的方法 to_string 相同。

columns 参数将限制显示的列

float_format 参数控制浮点值的精度

bold_rows 默认情况下将使行标签加粗,但你可以关闭它

classes 参数提供了给 HTML 表 设置 CSS 类的能力。

请注意,这些类附加到现有的 dataframe 类之后

render_links 参数提供了向包含 url 的单元格添加超链接的能力

最后, escape 参数允许您控制 HTML 结果中是否转义了 "" 、 "" 和 "" 字符(默认情况下为 True )。

因此,要获得没有转义字符的 HTML ,请传递 escape=False

转义

不转义

在某些浏览器上这两个 HTML 表可能并不会显示出差异。

在顶级 pandas io 函数 read_html 中,用于解析 HTML 表的库存在一些问题

请问python tk如何生成图片这种表格,并且可以在空白处添加内容后保存到新的word?

如何利用python爬取数据并保存为word文档?请看下面的经验吧! 方法/步骤 在做爬取数据之前,你需要下载安装两个东西,一个是urllib,另外一个是python-docx. 然后在python的编辑器中输入import选项,提供这两个库的服务 urllib主要负责抓取网页的数据,单纯的抓取网页数据其实很简单,输入如图所示的命令,后面带链接即可. 抓取下来了,还不算,必须要进行读取,否则无效. 接下来就是抓码了,不转码是完成不了保存的,将读取的函数read转码.再随便标记一个比如XA. 最后

如何利用python爬取数据并保存为word文档?请看下面的经验吧!

方法/步骤

在做爬取数据之前,你需要下载安装两个东西,一个是urllib,另外一个是python-docx。

然后在python的编辑器中输入import选项,提供这两个库的服务

urllib主要负责抓取网页的数据,单纯的抓取网页数据其实很简单,输入如图所示的命令,后面带链接即可。

抓取下来了,还不算,必须要进行读取,否则无效。

接下来就是抓码了,不转码是完成不了保存的,将读取的函数read转码。再随便标记一个比如XA。

最后再输入三句,第一句的意思是新建一个空白的word文档。

第二句的意思是在文档中添加正文段落,将变量XA抓取下来的东西导进去。

第三句的意思是保存文档docx,名字在括号里面。

这个爬下来的是源代码,如果还需要筛选的话需要自己去添加各种正则表达式。

python怎样做html的表格

现要实现python制作html格式的表格,利用Python对字符串str.format()格式化操作进行处理,在日常对CVS格式文件处理过程当中,经常会将CVS格式文件进行转换,在正式场合是程序读取CVS文件进行转换并输出到html格式的文件当中,但现在只是实现一下转换的过程,需要输入以逗号分隔的数据。

在设计程式的时候,需要先定义一下整个代码的框架,首先我们要定义一个主函数main(),虽然Python没有规定入口函数,一般在正式的开发中都设计了一个main()函数作为程序的入口函数,或许这是一种规范吧。然后我们在定义一个打印表头的方法print_head(),并在主函数里进行调用。再定义一个打印表尾的方法print_end(),也在主函数中进行调用。定义print_line()为打印表格行,定义extract_field()处理cvs行数据转换为list集合数据。最后再定义一个处理特殊符号的方法escape_html(),因为在html代码中为了避免与它的标签冲突,特要进行特殊符号的转换,如--

还有就是对长度过长的数据要进行处理并用...代替

源代码:

#Author Tandaly

#Date 2013-04-09

#File Csv2html.py

#主函数

def main():

print_head()

maxWidth = 100

count = 0

while True:

try:

line = str(input())

if count == 0:

color = "lightgreen"

elif count%2 == 0:

color = "white"

else:

color = "lightyellow"

print_line(line, color, maxWidth)

count += 1

except EOFError:

break

print_end()

#打印表格头

def print_head():

print("")

#打印表行

def print_line(line, color, maxWidth):

tr = "".format(color)

tds = ""

if line is not None and len(line) 0:

fields = axtract_fields(line)

for filed in fields:

td = "{0}".format(filed if (len(str(filed)) = maxWidth) else

(str(filed)[:100] + "..."))

tds += td

tr += "{0}

".format(tds)

print(tr)

#打印表格尾

def print_end():

print("")

#抽取行值

def axtract_fields(line):

line = escape_html(line)

fields = []

field = ""

quote = None

for c in line:

if c in "\"":

if quote is None:

quote = c

elif quote == c:

quote = None

continue

if quote is not None:

field += c

continue

if c in ",":

fields.append(field)

field = ""

else:

field += c

if len(field) 0:

fields.append(field)

return fields

#处理特殊符号

def escape_html(text):

text = text.replace("", "")

text = text.replace("", "")

text = text.replace("", "")

return text

#程序入口

if __name__ == "__main__":

main()

运行结果:

"nihao","wo"

nihaowo

"lsddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsfdddddddddddddddddddddddssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeoooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooosdjfsldkfjsladjfsladjflasjdfljslkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkksssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss","tandaly"

lsdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd...tandaly

"ddddddddddddddddsllsflsdjflsdjfljasfjslfjleiwiwooooooooooosdlsdfkckslslllllwllllllllllllllllllllllllllllllllllllllllllllllllllllllgfdjslfjsdlkkkkkkkkkkksdfssssssssssssss",

34

ddddddddddddddddsllsflsdjflsdjfljasfjslfjleiwiwooooooooooosdlsdfkckslslllllwllllllllllllllllllllllll...34

python中如何将表中的数据做成一张表,然后再从中取出数据?

第一部分是生成数据表,常见的生成方法有两种,第一种是导入外部数据,第二种是直接写入数据。 Excel 中的文件菜单中提供了获取外部数据的功能,支持数据库和文本文件和页面的多种数据源导入。

获取外部数据

python 支持从多种类型的数据导入。在开始使用 python 进行数据导入前需要先导入 pandas 库,为了方便起见,我们也同时导入 numpy 库。

1 import numpy as np

2 import pandas as pd

导入数据表

下面分别是从 excel 和 csv 格式文件导入数据并创建数据表的方法。代码是最简模式,里面有很多可选参数设置,例如列名称,索引列,数据格式等等。感兴趣的朋友可以参考 pandas 的

官方文档。

1 df=pd.DataFrame(pd.read_csv(‘name.csv’,header=1))

2 df=pd.DataFrame(pd.read_excel(‘name.xlsx’))

创建数据表

另一种方法是通过直接写入数据来生成数据表,excel 中直接在单元格中输入数据就可以,python 中通过下面的代码来实现。生成数据表的函数是 pandas 库中的 DateFrame 函数,数据表一共有 6 行数据,每行有 6 个字段。在数据中我们特意设置了一些 NA 值和有问题的字段,例如包含空格等。后面将在数据清洗步骤进行处理。后面我们将统一以 DataFrame 的简称 df 来命名数据表。

1 df = pd.DataFrame({‘id’:[1001,1002,1003,1004,1005,1006],

2 ‘date’:pd.date_range(‘20130102’, periods=6),

3 ‘city’:['Beijing ', ‘SH’, ’ guangzhou ', ‘Shenzhen’, ‘shanghai’, 'BEIJING '],

4 ‘age’:[23,44,54,32,34,32],

5 ‘category’:[‘100-A’,‘100-B’,‘110-A’,‘110-C’,‘210-A’,‘130-F’],

6 ‘price’:[1200,np.nan,2133,5433,np.nan,4432]},

7 columns =[‘id’,‘date’,‘city’,‘category’,‘age’,‘price’])

这是刚刚创建的数据表,我们没有设置索引列,price 字段中包含有 NA 值,city 字段中还包含了一些脏数据。

数据表检查

python 中处理的数据量通常会比较大,所以就需要我们对数据表进行检查。比如我们之前的文章中介绍的纽约出租车数据和 Citibike 的骑行数据,数据量都在千万级,我们无法一目了然的了解数据表的整体情况,必须要通过一些方法来获得数据表的关键信息。数据表检查的另一个目的是了解数据的概况,例如整个数据表的大小,所占空间,数据格式,是否有空值和重复项和具体的数据内容。为后面的清洗和预处理做好准备。

数据维度(行列)

Excel 中可以通过 CTRL 向下的光标键,和 CTRL 向右的光标键来查看行号和列号。Python 中使用 shape 函数来查看数据表的维度,也就是行数和列数,函数返回的结果(6,6)表示数据表有 6 行,6 列。下面是具体的代码。

1 #查看数据表的维度

2 df.shape

3 (6, 6)

数据表信息

使用 info 函数查看数据表的整体信息,这里返回的信息比较多,包括数据维度,列名称,数据格式和所占空间等信息。

1 #数据表信息

2 df.info()

4 class ‘pandas.core.frame.DataFrame’

5 RangeIndex: 6 entries, 0 to 5

6 Data columns (total 6 columns):

7 id 6 non-null int64

8 date 6 non-null datetime64[ns]

9 city 6 non-null object

10 category 6 non-null object

11 age 6 non-null int64

12 price 4 non-null float64

13 dtypes: datetime64ns, float64(1), int64(2), object(2)

14 memory usage: 368.0 bytes

查看数据格式

Excel 中通过选中单元格并查看开始菜单中的数值类型来判断数据的格式。Python 中使用 dtypes 函数来返回数据格式。

Dtypes 是一个查看数据格式的函数,可以一次性查看数据表中所有数据的格式,也可以指定一列来单独查看。

1#查看数据表各列格式

2df.dtypes

3

4id int64

5date datetime64[ns]

6city object

7category object

8age int64

9price float64

10dtype: object

11

12#查看单列格式

13df[‘B’].dtype

14

15dtype(‘int64’)

查看空值

Excel 中查看空值的方法是使用“定位条件”功能对数据表中的空值进行定位。“定位条件”在“开始”目录下的“查找和选择”目录中。

Isnull 是 Python 中检验空值的函数,返回的结果是逻辑值,包含空值返回 True,不包含则返回 False。可以对整个数据表进行检查,也可以单独对某一列进行空值检查。

df_isnull

1#检查特定列空值

2df[‘price’].isnull()

3

40 False

51 True

62 False

73 False

84 True

95 False

10Name: price, dtype: bool

查看唯一值

Excel 中查看唯一值的方法是使用“条件格式”对唯一值进行颜色标记。Python 中使用 unique 函数查看唯一值。

Unique 是查看唯一值的函数,只能对数据表中的特定列进行检查。下面是代码,返回的结果是该列中的唯一值。类似与 Excel 中删除重复项后的结果。

1 #查看 city 列中的唯一值

2 df[‘city’].unique()34array(['Beijing ', ‘SH’, ’ guangzhou ', ‘Shenzhen’, ‘shanghai’, 'BEIJING '], dtype=object)

查看数据表数值

Python 中的 Values 函数用来查看数据表中的数值。以数组的形式返回,不包含表头信息。

1#查看数据表的值

2df.values

3

4array([[1001, Timestamp(‘2013-01-02 00:00:00’), 'Beijing ', ‘100-A’, 23,

5 1200.0],

6 [1002, Timestamp(‘2013-01-03 00:00:00’), ‘SH’, ‘100-B’, 44, nan],

7 [1003, Timestamp(‘2013-01-04 00:00:00’), ’ guangzhou ', ‘110-A’, 54,

8 2133.0],

9 [1004, Timestamp(‘2013-01-05 00:00:00’), ‘Shenzhen’, ‘110-C’, 32,

10 5433.0],

11 [1005, Timestamp(‘2013-01-06 00:00:00’), ‘shanghai’, ‘210-A’, 34,

12 nan],

13 [1006, Timestamp(‘2013-01-07 00:00:00’), 'BEIJING ', ‘130-F’, 32,

14 4432.0]], dtype=object)

查看列名称

Colums 函数用来单独查看数据表中的列名称。

1 #查看列名称

2 df.columns

3

4 Index([‘id’, ‘date’, ‘city’, ‘category’, ‘age’, ‘price’], dtype=‘object’)

查看前 10 行数据

Head 函数用来查看数据表中的前 N 行数据,默认 head()显示前 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看前 3 行的数据。

1#查看前 3 行数据``df.head(``3``)

Tail 行数与 head 函数相反,用来查看数据表中后 N 行的数据,默认 tail()显示后 10 行数据,可以自己设置参数值来确定查看的行数。下面的代码中设置查看后 3 行的数据。

1#查看最后 3 行df.tail(3)

python对比两张EXCEL表,将不同的数据生成新表?

import pandas as pd

# 数据表 a

df1 = pd.read_excel('C:/Users/Jelly/Desktop/a.xlsx')['名称']

# 数据表 b

df2 = pd.read_excel('C:/Users/Jelly/Desktop/b.xlsx')

# 筛选标记为2的名称

df2 = df2[df2['标记'] == 2]['名称']

# 数据表 a 转换为列表

aList = list(df1)

# 表头

columns = ['名称']

cList = []

# 遍历数据表 b

for k in df2:

# 判断 标记为2的名称是否在数据表中

if k not in aList:

# 输出

print(k)

cList.append(k)

df3 = pd.DataFrame(cList, columns=columns)

# 保存新数据表

df3.to_excel('c.xlsx', index=0)

a

b

c


分享标题:python生成表格函数,Python表格
本文URL:http://myzitong.com/article/hchssd.html