本文将带您了解关于在python2或python3中编写csv文件的可移植方式的新内容,同时我们还将为您解释采用python语言对csv文件写入的相关知识,另外,我们还将为您提供关于4.python读
本文将带您了解关于在python 2或python 3中编写csv文件的可移植方式的新内容,同时我们还将为您解释采用python语言对csv文件写入的相关知识,另外,我们还将为您提供关于4.python读写csv文件、55 Python - 利用python生成CSV文件、CSV文件在Python中的几种处理方式、csv文件的中文如何正确在python中显示的实用信息。
本文目录一览:- 在python 2或python 3中编写csv文件的可移植方式(采用python语言对csv文件写入)
- 4.python读写csv文件
- 55 Python - 利用python生成CSV文件
- CSV文件在Python中的几种处理方式
- csv文件的中文如何正确在python中显示
在python 2或python 3中编写csv文件的可移植方式(采用python语言对csv文件写入)
在我的Windows机器上,我通常在python 2中执行此操作以编写一个csv文件:
import csv
f = open("out.csv","wb")
cr = csv.writer(f,delimiter=';')
cr.writerow(["a","b","c"])
f.close()
现在python 3禁止将文本文件编写为二进制文件,该代码段不再起作用。这样可行:
import csv
f = open("out.csv","w",newline='')
cr = csv.writer(f,"c"])
f.close()
问题是:newline
Python 2未知参数。
当然,省略换行符会导致csv文件中包含太多\r
字符,因此是不可接受的。
我目前正在执行向后兼容的过程,以逐步从python 2迁移到python 3.5。我的所有模块中都有很多这样的语句。
我的解决方案是将代码嵌入到自定义模块中,然后自定义模块返回文件处理程序+
writer对象。在模块内部进行python版本检查,这使得使用我的模块的任何模块都可以在任何python版本上正常工作,而不会造成太多黑客攻击。
有没有更好的办法?
4.python读写csv文件
1.爬取豆瓣top250书籍
import requests import json import csv from bs4 import BeautifulSoup books = []
def book_name(url): res = requests.get(url) html = res.text soup = BeautifulSoup(html,‘html.parser‘) items = soup.find(class_="grid-16-8 clearfix").find(class_="indent").find_all(‘table‘) for i in items: book = [] title = i.find(class_="pl2").find(‘a‘) book.append(‘《‘ + title.text.replace(‘ ‘,‘‘).replace(‘\n‘,‘‘) + ‘》‘) star = i.find(class_="star clearfix").find(class_="rating_nums") book.append(star.text + ‘分‘) try: brief = i.find(class_="quote").find(class_="inq") except AttributeError: book.append(‘”暂无简介“‘) else: book.append(brief.text) link = i.find(class_="pl2").find(‘a‘)[‘href‘] book.append(link) global books books.append(book) print(book) try: next = soup.find(class_="paginator").find(class_="next").find(‘a‘)[‘href‘] # 翻到最后一页 except TypeError: return 0 else: return next next = ‘https://book.douban.com/top250?start=0&filter=‘ count = 0 while next != 0: count += 1 next = book_name(next) print(‘-----------以上是第‘ + str(count) + ‘页的内容-----------‘) csv_file = open(‘D:/top250_books.csv‘,‘w‘,newline=‘‘,encoding=‘utf-8‘) w = csv.writer(csv_file) w.writerow([‘书名‘,‘评分‘,‘简介‘,‘链接‘]) for b in books: w.writerow(b)
结果
2.把评分为9.0的书籍保存到book_out.csv文件中
‘‘‘ 1.爬取豆瓣评分排行前250本书,保存为top250.csv 2.读取top250.csv文件,把评分为9.0以上的书籍保存到另外一个csv文件中 ‘‘‘ import csv #打开的时候必须用encoding=‘utf-8‘,否则报错 with open(‘top250.csv‘,encoding=‘utf-8‘) as rf: reader = csv.reader(rf) #读取头部 headers = next(reader) with open(‘books_out.csv‘,encoding=‘utf-8‘) as wf: writer = csv.writer(wf) #把头部信息写进去 writer.writerow(headers) for book in reader: #获取评分 score = book[1] #把评分大于9.0的过滤出来 if score and float(score) >= 9.0: writer.writerow(book)
55 Python - 利用python生成CSV文件
新建项目3
导入之前的CSV文件 并新建一个py文件
类似29课内容,创建一个项目的虚拟环境
模拟把程序中数据写入CSV文件(注意区分写入一行和写入多行函数区别)
结果:每行多加了一个空行
修改代码,修该改open方法写入时候增加一个参数newline为空
以dict形式写入CSV文件
CSV文件在Python中的几种处理方式
Comma Separated Values,简称CSV,它是一种以逗号分隔数值的文件类型。在数据库或电子表格中,它是最常见的导入导出格式,它以一种简单而明了的方式存储和共享数据,CSV文件通常以纯文本的方式存储数据表。今天,我将给大家分享在Python中如何操作CSV文件。
一、数据源
首先,我们来看看本次操作的数据源,图1 CSV文件是在Excel中打开的,图2 CSV文件是在Notepad++中打开的,我们在图2中可以看到数值之间是以逗号分隔开的,每行末尾是CR回车符和LF换行符(请注意,Linux系统以LF结尾,MacOS系统以CR结尾)。


二、使用Python基本语法读写CSV文件
使用基本语法读取CSV文件中的数据大概思路是:获取文件对象,读取表头,按逗号分隔符拆分表头字段,使用for循环语句获取表体记录数据,拆分后再次写入另一张CSV文件中(如果要将数据写入xls*格式的文件中,请参考前期公众号文章),步骤如下:
Step 1:导入必要模块,获取输入输出文件路径。
import sys
infile = sys.argv[1]
outfile = sys.argv[2]
Step 2:使用open内置函数获取文件对象。
with open(infile, "r", newline='''') as fr, open(outfile, "w", newline='''') as fw:
Step 3:使用文件对象的readline方法或者迭代器的next方法读取表头(文件对象是一个迭代器对象,支持迭代协议),使用str.split方法对表头进行拆分(注意,要使用strip函数去掉尾部换行符)。
header = next(fr)
header = header.strip()
header_list = header.split(",")
Step 4:既然表头已经查分好了,我们需要将表头写入文件对象中(注意尾部需要添加一个换行符哦)。
fw.write(",".join(map(str, header_list)) + "\n")
当然,上面的代码也可以这么写:
print(*header_list, sep=",", file=fw)
Step 5:使用for循环读取表体数据,并将其拆分成列表写入到文件中。
for row in fr:
row = row.strip()
row_list = row.split(",")
fw.write(",".join(map(str, header_list)) + "\n")
以上步骤完成后,在命令提示符中输入:
python csvrw.py inputfile.csv outputfile.csv
输入输出csv文件名称以及脚本名称请自定义,以上只是举例说明。
以上代码如下:

三、使用csv模块读写CSV文件
csv模块是Python内置的一个模块,它考虑了csv文件中的各种复杂情况,平时处理文件基本上使用此模块,下面来看看csv模块处理csv文件的方式,其步骤如下:
Step 1:首先,导入必要模块,获取输入输出文件路径。
import sys
import csv
infile = sys.argv[1]
outfile = sys.argv[2]
Step 2:使用open内置函数获取文件对象。
with open(infile, "r", newline='''') as incsv, open(outfile, "w", newline='''') as outcsv:
Step 3:使用csv模块中的reader和writer函数分别获取reader和writer对象。
freader = csv.reader(incsv, delimiter=",")
fwriter = csv.writer(outcsv, delimiter=",")
Step 4:使用for循环语句读取和写入数据。
for rowlist in freader:
fwriter.writerow(rowlist)
以上步骤完成后,在命令提示符中输入相应命令即可(请参照)
代码如下:

四、使用pandas读写CSV文件
pandas库是一个强大的数据处理和数据分析库,使用pandas处理csv文件更简单,其步骤如下:
Step 1:首先,导入必要模块,获取输入输出文件路径。
import sys
import pandas as pd
infile = sys.argv[1]
outfile = sys.argv[2]
Step 2:使用pandas的read_csv方法将数据存储到一个DataFrame对象中。
dataframe = pd.read_csv(infile)
Step 3:然后使用DataFrame的to_csv方法将其输出到另一张csv表中。
dataframe.to_csv(outfile, index=False)
以上步骤完成后,在命令提示符中输入相应命令即可(请参照)
代码如下:

csv文件的中文如何正确在python中显示
运行环境:osx 10,python2.7
有一个csv文件,里面有中文,使用open打开,程序开始之前写了
# -*- coding: cp936 -*-
import sys
#reload(sys)
#sys.setdefaultencoding(''utf8'')
#encoding=utf8
打开之后用readline打印,但是中文还是乱码,使用read_csv打开,也是乱码,python本身的编码是ascii,用chardet检查,csv文件也是ascii编码,请问怎么解决这个问题,能让中文正常显示呢?
关于在python 2或python 3中编写csv文件的可移植方式和采用python语言对csv文件写入的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于4.python读写csv文件、55 Python - 利用python生成CSV文件、CSV文件在Python中的几种处理方式、csv文件的中文如何正确在python中显示等相关内容,可以在本站寻找。
本文标签: