python表格存取的方法,Python实现的简单读写csv文件操作示例
分类:微服架构

python实现将html表格转换成CSV文件的方法,

本文实例讲述了python实现将html表格转换成CSV文件的方法。分享给大家供大家参考。具体如下:

使用方法:python html2csv.py *.html
这段代码使用了 HTMLParser 模块

#!/usr/bin/python
# -*- coding: iso-8859-1 -*-
# Hello, this program is written in Python - http://python.org
programname = 'html2csv - version 2002-09-20 - http://sebsauvage.net'
import sys, getopt, os.path, glob, HTMLParser, re
try:  import psyco ; psyco.jit() # If present, use psyco to accelerate the program
except: pass
def usage(progname):
  ''' Display program usage. '''
  progname = os.path.split(progname)[1]
  if os.path.splitext(progname)[1] in ['.py','.pyc']: progname = 'python '+progname
  return '''%s
A coarse HTML tables to CSV (Comma-Separated Values) converter.
Syntax  : %s source.html
Arguments : source.html is the HTML file you want to convert to CSV.
      By default, the file will be converted to csv with the same
      name and the csv extension (source.html -> source.csv)
      You can use * and ?.
Examples  : %s mypage.html
      : %s *.html
This program is public domain.
Author : Sebastien SAUVAGE <sebsauvage at sebsauvage dot net>
     http://sebsauvage.net
''' % (programname, progname, progname, progname)
class html2csv(HTMLParser.HTMLParser):
  ''' A basic parser which converts HTML tables into CSV.
    Feed HTML with feed(). Get CSV with getCSV(). (See example below.)
    All tables in HTML will be converted to CSV (in the order they occur
    in the HTML file).
    You can process very large HTML files by feeding this class with chunks
    of html while getting chunks of CSV by calling getCSV().
    Should handle badly formated html (missing <tr>, </tr>, </td>,
    extraneous </td>, </tr>...).
    This parser uses HTMLParser from the HTMLParser module,
    not HTMLParser from the htmllib module.
    Example: parser = html2csv()
         parser.feed( open('mypage.html','rb').read() )
         open('mytables.csv','w+b').write( parser.getCSV() )
    This class is public domain.
    Author: Sébastien SAUVAGE <sebsauvage at sebsauvage dot net>
        http://sebsauvage.net
    Versions:
      2002-09-19 : - First version
      2002-09-20 : - now uses HTMLParser.HTMLParser instead of htmllib.HTMLParser.
            - now parses command-line.
    To do:
      - handle <PRE> tags
      - convert html entities (&name; and ref;) to Ascii.
      '''
  def __init__(self):
    HTMLParser.HTMLParser.__init__(self)
    self.CSV = ''   # The CSV data
    self.CSVrow = ''  # The current CSV row beeing constructed from HTML
    self.inTD = 0   # Used to track if we are inside or outside a <TD>...</TD> tag.
    self.inTR = 0   # Used to track if we are inside or outside a <TR>...</TR> tag.
    self.re_multiplespaces = re.compile('s+') # regular expression used to remove spaces in excess
    self.rowCount = 0 # CSV output line counter.
  def handle_starttag(self, tag, attrs):
    if  tag == 'tr': self.start_tr()
    elif tag == 'td': self.start_td()
  def handle_endtag(self, tag):
    if  tag == 'tr': self.end_tr()
    elif tag == 'td': self.end_td()     
  def start_tr(self):
    if self.inTR: self.end_tr() # <TR> implies </TR>
    self.inTR = 1
  def end_tr(self):
    if self.inTD: self.end_td() # </TR> implies </TD>
    self.inTR = 0      
    if len(self.CSVrow) > 0:
      self.CSV += self.CSVrow[:-1]
      self.CSVrow = ''
    self.CSV += 'n'
    self.rowCount += 1
  def start_td(self):
    if not self.inTR: self.start_tr() # <TD> implies <TR>
    self.CSVrow += '"'
    self.inTD = 1
  def end_td(self):
    if self.inTD:
      self.CSVrow += '",' 
      self.inTD = 0
  def handle_data(self, data):
    if self.inTD:
      self.CSVrow += self.re_multiplespaces.sub(' ',data.replace('t',' ').replace('n','').replace('r','').replace('"','""'))
  def getCSV(self,purge=False):
    ''' Get output CSV.
      If purge is true, getCSV() will return all remaining data,
      even if <td> or <tr> are not properly closed.
      (You would typically call getCSV with purge=True when you do not have
      any more HTML to feed and you suspect dirty HTML (unclosed tags). '''
    if purge and self.inTR: self.end_tr() # This will also end_td and append last CSV row to output CSV.
    dataout = self.CSV[:]
    self.CSV = ''
    return dataout
if __name__ == "__main__":
  try: # Put getopt in place for future usage.
    opts, args = getopt.getopt(sys.argv[1:],None)
  except getopt.GetoptError:
    print usage(sys.argv[0]) # print help information and exit:
    sys.exit(2)
  if len(args) == 0:
    print usage(sys.argv[0]) # print help information and exit:
    sys.exit(2)    
  print programname
  html_files = glob.glob(args[0])
  for htmlfilename in html_files:
    outputfilename = os.path.splitext(htmlfilename)[0]+'.csv'
    parser = html2csv()
    print 'Reading %s, writing %s...' % (htmlfilename, outputfilename)
    try:
      htmlfile = open(htmlfilename, 'rb')
      csvfile = open( outputfilename, 'w+b')
      data = htmlfile.read(8192)
      while data:
        parser.feed( data )
        csvfile.write( parser.getCSV() )
        sys.stdout.write('%d CSV rows written.r' % parser.rowCount)
        data = htmlfile.read(8192)
      csvfile.write( parser.getCSV(True) )
      csvfile.close()
      htmlfile.close()
    except:
      print 'Error converting %s    ' % htmlfilename
      try:  htmlfile.close()
      except: pass
      try:  csvfile.close()
      except: pass
  print 'All done. '

希望本文所述对大家的Python程序设计有所帮助。

本文实例讲述了python实现将html表格转换成CSV文件的方法。分享给大家供大家参考。具体如下:...

本文实例讲述了Python实现读取及写入csv文件的方法。分享给大家供大家参考,具体如下:

本文实例讲述了Python实现的简单读写csv文件操作。分享给大家供大家参考,具体如下:

本文实例为大家分享了python表格存取的具体代码,供大家参考,具体内容如下

新建csvData.csv文件,数据如下:

python中有一个读写csv文件的包,直接import csv即可

xlwt/xlrd库 存Excel文件:(如果存储数据中有字符,那么写法还有点小小的变化)

图片 1

新建test.csv

import xlwt 

workbook = xlwt.Workbook(encoding='utf-8') 
booksheet = workbook.add_sheet('Sheet 1', cell_overwrite_ok=True) 
#存第一行cell(1,1)和cell(1,2) 
booksheet.write(0,0,34) 
booksheet.write(0,1,38) 
#存第二行cell(2,1)和cell(2,2) 
booksheet.write(1,0,36) 
booksheet.write(1,1,39) 
#存一行数据 
rowdata = [43,56] 
for i in range(len(rowdata)): 
  booksheet.write(2,i,rowdata[i]) 
workbook.save('test_xlwt.xls') 

具体代码如下:

1.写

读Excel文件:(同样是对于数值类型数据)

# coding:utf-8
import csv
# 读取csv文件方式1
csvFile = open("csvData.csv", "r")
reader = csv.reader(csvFile) # 返回的是迭代类型
data = []
for item in reader:
  print(item)
  data.append(item)
print(data)
csvFile.close()
# 读取csv文件方式2
with open("csvData.csv", "r") as csvfile:
  reader2 = csv.reader(csvfile) # 读取csv文件,返回的是迭代类型
  for item2 in reader2:
    print(item2)
csvFile.close()
# 从列表写入csv文件
csvFile2 = open('csvFile2.csv','w', newline='') # 设置newline,否则两行之间会空一行
writer = csv.writer(csvFile2)
m = len(data)
for i in range(m):
  writer.writerow(data[i])
csvFile2.close()
# 从字典写入csv文件
dic = {'张三':123, '李四':456, '王二娃':789}
csvFile3 = open('csvFile3.csv','w', newline='')
writer2 = csv.writer(csvFile3)
for key in dic:
  writer2.writerow([key, dic[key]])
csvFile3.close()
import csv
with open("test.csv","w",encoding='utf8') as csvfile:
  writer=csv.writer(csvfile)
  writer.writerow(["index","a_name","b_name"])
  writer.writerows([[0,'a1','b1'],[1,'a2','b2'],[2,'a3','b3']])
import xlrd 

workbook = xlrd.open_workbook('D:\Py_exercise\test_xlwt.xls') 
print(workbook.sheet_names())         #查看所有sheet 
booksheet = workbook.sheet_by_index(0)     #用索引取第一个sheet 
booksheet = workbook.sheet_by_name('Sheet 1') #或用名称取sheet 
#读单元格数据 
cell_11 = booksheet.cell_value(0,0) 
cell_21 = booksheet.cell_value(1,0) 
#读一行数据 
row_3 = booksheet.row_values(2) 
print(cell_11, cell_21, row_3) 

>>>34.0 36.0 [43.0, 56.0] 

更多Python相关内容感兴趣的读者可查看本站专题:《Python操作Excel表格技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

直接使用这种写法会导致文件每一行后面会多一个空行

openpyxl 库 存Excel文件:

希望本文所述对大家Python程序设计有所帮助。

解决的方法

from openpyxl import Workbook 

workbook = Workbook() 
booksheet = workbook.active   #获取当前活跃的sheet,默认是第一个sheet 
#存第一行单元格cell(1,1) 
booksheet.cell(1,1).value = 6  #这个方法索引从1开始 
booksheet.cell("B1").value = 7 
#存一行数据 
booksheet.append([11,87]) 
workbook.save("test_openpyxl.xlsx") 

您可能感兴趣的文章:

  • python中csv文件的若干读写方法小结
  • Python 3.x读写csv文件中数字的方法示例
  • Python写入CSV文件的方法
  • python读取csv文件示例(python操作csv)
  • Python程序中用csv模块来操作csv文件的基本使用教程
  • Python操作csv文件实例详解
  • Python导出数据到Excel可读取的CSV文件的方法
  • Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
  • 使用Python对Csv文件操作实例代码
  • python实现将html表格转换成CSV文件的方法
  • Python实现的简单读写csv文件操作示例

用python3来写wirterow时,打开文件时使用w模式,然后带上newline=''

读Excel文件:

import csv
with open("test.csv","w",encoding='utf8',newline='') as csvfile:
  writer=csv.writer(csvfile)
  writer.writerow(["index","a_name","b_name"])
  writer.writerows([[0,'a1','b1'],[1,'a2','b2'],[2,'a3','b3']])
from openpyxl import load_workbook 

workbook = load_workbook('D:\Py_exercise\test_openpyxl.xlsx') 
#booksheet = workbook.active        #获取当前活跃的sheet,默认是第一个sheet 
sheets = workbook.get_sheet_names()     #从名称获取sheet 
booksheet = workbook.get_sheet_by_name(sheets[0]) 

rows = booksheet.rows 
columns = booksheet.columns 
#迭代所有的行 
for row in rows: 
  line = [col.value for col in row] 

#通过坐标读取值 
cell_11 = booksheet.cell('A1').value 
cell_11 = booksheet.cell(row=1, column=1).value 

2.读

原理上其实都一样,就写法上有些差别。

import csv
with open("test.csv","r") as csvfile:
  reader=csv.reader(csvfile)
  for line in reader:
    print(line)

其实如果对存储格式没有要求的话,我觉得存成 csv文件 也挺好的:

图片 2

import pandas as pd 

csv_mat = np.empty((0,2),float) 
csv_mat = np.append(csv_mat, [[43,55]], axis=0) 
csv_mat = np.append(csv_mat, [[65,67]], axis=0) 
csv_pd = pd.DataFrame(csv_mat) 
csv_pd.to_csv("test_pd.csv", sep=',', header=False, index=False) 

更多Python相关内容感兴趣的读者可查看本站专题:《Python操作Excel表格技巧总结》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

因为它读起来非常简单:

希望本文所述对大家Python程序设计有所帮助。

import pandas as pd 

filename = "D:\Py_exercise\test_pd.csv" 
csv_data = pd.read_csv(filename, header=None) 
csv_data = np.array(csv_data, dtype=float) 

您可能感兴趣的文章:

  • python中csv文件的若干读写方法小结
  • Python 3.x读写csv文件中数字的方法示例
  • Python写入CSV文件的方法
  • python读取csv文件示例(python操作csv)
  • Python程序中用csv模块来操作csv文件的基本使用教程
  • Python操作csv文件实例详解
  • Python导出数据到Excel可读取的CSV文件的方法
  • Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法
  • 使用Python对Csv文件操作实例代码
  • python实现将html表格转换成CSV文件的方法
  • Python实现读取及写入csv文件的方法示例

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

  • python中使用xlrd、xlwt操作excel表格详解
  • Python实现批量读取word中表格信息的方法
  • Python实现简单HTML表格解析的方法
  • Python第三方库xlrd/xlwt的安装与读写Excel表格
  • 详解python中xlrd包的安装与处理Excel表格
  • Python实现将数据库一键导出为Excel表格的实例
  • python实现将html表格转换成CSV文件的方法
  • 利用python模拟sql语句对员工表格进行增删改查
  • 在Gnumeric下使用Python脚本操作表格的教程
  • Python将多个excel表格合并为一个表格

本文由10bet手机官网发布于微服架构,转载请注明出处:python表格存取的方法,Python实现的简单读写csv文件操作示例

上一篇:没有了 下一篇:JS面向对象编程详解,js对象的构造和继承实现代码
猜你喜欢
热门排行
精彩图文