将多个csv文件整合到一个csv文件中
先导入csv模块:
import csv
打开所有csv文件:
先创建一个列表存放csv文件名:
list_1 = [
'双流', '大邑', '崇州', '彭州', '成华', '天府新区', '天府新区南区', '新津',
'新都', '武侯', '温江', '简阳', '蒲江', '邛崃', '郫都', '都江堰',
'金堂', '金牛', '锦江', '青白江', '青羊', '高新', '高新西', '龙泉驿'
]
循环遍历打开这多个csv文件,当然要创建读方法:
for i in list_1:
f = open(f'./成都{i}二手房信息.csv', 'r', encoding='utf-8')
myreader = csv.reader(f)
创建一个csv文件保存多个csv文件数据,同时创建写方法:
f1 = open('成都二手房.csv', 'w', encoding='utf-8', newline='')
mywriter = csv.writer(f1)
再通过之前的读方法,获取这24个csv文件里面的数据,一行一行的遍历:
for j in myreader:
将获取到的数据单行写入到f1(成都二手房.csv)文件中,因为写方法就是对应的f1文件的写方法:
mywriter.writerow(j)
读完后先关闭文件f文件的读方法,写入完成后再关闭f1文件的写方法,输出提示词:
f.close()
f1.close()
print('写入完成')
后面发现每个文件开头第一行都有 [‘行政区’, ‘标题’, ‘小区’, ‘街道’, ‘户型’, ‘面积’, ‘装修’, ‘单价’, ‘总价’] 导致重复输入了这一行,想办法删除这一行:
在导入数据之前,先单行写入一行这个数据:
list2 = ['行政区', '标题', '小区', '街道', '户型', '面积', '装修', '单价', '总价']
mywriter.writerow(list2)
再在循环里面判断只要不是 [‘行政区’, ‘标题’, ‘小区’, ‘街道’, ‘户型’, ‘面积’, ‘装修’, ‘单价’, ‘总价’] 这个数据就可以单行写入。
if j != ['行政区', '标题', '小区', '街道', '户型', '面积', '装修', '单价', '总价']:
总代码:
import csv
list_1 = [
'双流', '大邑', '崇州', '彭州', '成华', '天府新区', '天府新区南区', '新津',
'新都', '武侯', '温江', '简阳', '蒲江', '邛崃', '郫都', '都江堰',
'金堂', '金牛', '锦江', '青白江', '青羊', '高新', '高新西', '龙泉驿'
]
f1 = open('成都二手房.csv', 'w', encoding='utf-8', newline='')
mywriter = csv.writer(f1)
list2 = ['行政区', '标题', '小区', '街道', '户型', '面积', '装修', '单价', '总价']
mywriter.writerow(list2)
for i in list_1:
f = open(f'./成都{i}二手房信息.csv', 'r', encoding='utf-8')
myreader = csv.reader(f)
for j in myreader:
if j != ['行政区', '标题', '小区', '街道', '户型', '面积', '装修', '单价', '总价']:
mywriter.writerow(j)
f.close()
f1.close()
print('写入完成')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zd4GyyAr-1656673315518)(C:\Users\Asus\AppData\Roaming\Typora\typora-user-images\image-20220701164818904.png)]
利用OS模块输出一个文件夹下的多个文件名
先导入os模块
import os
用os模块中的listdir方法将指定路径下的(相对路径和绝对路径都可以)的所有文件名,在一个列表里面名字以字符串的形式输出。输出类型是list(列表)
file_list = os.listdir('成都链家二手房数据')
# print(file_list, type(file_list))
然后遍历列表file_list中的元素,用切片限制只输出.csv文件。
for i in file_list:
if i[-4:] == '.csv':
print(i)
将所有的csv文件的数据导入到excel文件中
先导入openpyxl模块
import openpyxl
新建后缀名为.xlsx的excel文件(工作簿)
file = openpyxl.Workbook()
新建名为’成都链家二手房数据汇总’的工作表
file.create_sheet('成都链家二手房数据汇总') # create_sheet创建一个表
获取成都链家二手房数据文件夹下所有的csv文件名:
file_list = os.listdir('./成都链家二手房数据')
循环打开所有csv文件,对打开的文件名有个限制,当然读文件就要写读方法:
for i in file_list:
if i[-9:] == '二手房信息.csv' and i[:2] == '成都':
f = open(f'./成都链家二手房数据/{i}', 'r', encoding='utf-8') # 以格式化输出的方式表示全部的csv文件
reader = csv.reader(f)
遍历(一行一行地)获取读取到的所有数据:
count = 0 # 行数初始为0
for j in reader:
count +=1 # 每输入一行行数加一
循环遍历,输出内容的列数,在名为成都链家二手房数据汇总的表中添加,数据位置在count行,k+1列(遍历长度时是从0开始遍历的,而输入的列数只能从1开始,所以k+1),而需要添加的数据的值是j列表中的下标为k的元素。
for k in range(0, len(j)):
file['成都链家二手房数据汇总'].cell(count, k + 1).value = j[k] # 先定义位置,再定义需添加的数据的值
关闭读方法的读文件:
f.close()
将数据保存在成都链家二手房的excel工作簿(文件)中,提示数据写入完成:
file.save('./成都链家二手房.xlsx')
print('数据写入完成')
总代码:
import os
import csv
import openpyxl
# 新建xlsx后缀文件(工作簿)
file = openpyxl.Workbook()
# 新建工作表
file.create_sheet('成都链家二手房数据汇总')
# 从源数据文件读数据
# 将所在路径下的文件名以一个列表的形式输出
file_list = os.listdir('./成都链家二手房数据')
# 创建一个变量进行行号的递增
count = 0
for i in file_list:
if i[-9:] == '二手房信息.csv' and i[:2] == '成都':
f = open(f'./成都链家二手房数据/{i}', 'r', encoding='utf-8')
reader = csv.reader(f)
for j in reader:
count += 1
for k in range(0, len(j)):
file['成都链家二手房数据汇总'].cell(count, k + 1).value = j[k]
f.close()
file.save('./成都链家二手房.xlsx')
print('数据写入完成')
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gQpOVBZS-1656673315519)(C:\Users\Asus\AppData\Roaming\Typora\typora-user-images\image-20220701174333784.png)]
获取一个excel文件的一个表的行数,列数。然后打印出所有单个单元格中的数据
导入openpyxl模块:
import openpyxl
先打开已经存在的成都链家二手房这个excel文件
file = openpyxl.load_workbook('./成都链家二手房.xlsx')
在这个文件中找到名为成都链家二手房数据汇总表:
ws = file['成都链家二手房数据汇总']
获取这个表的最大行数:
rows = ws.max_row
获取这个表的最大列数:
col = ws.max_column
从第一行第一列开始取值,输出该表的位置为i行j列的数据的值:
for i in range(1, rows + 1): # 行(从第一行第一列开始取)
for j in range(1, col + 1): # 列
print(ws.cell(i,j).value)
总代码:
import openpyxl
# max_row
# max_column
# 加载xlsx文件
file = openpyxl.load_workbook('./成都链家二手房.xlsx')
# 从工作簿中找工作表
ws = file['成都链家二手房数据汇总']
# max_row:获取xlsx文件中最大行数
rows = ws.max_row
# max_column:获取xlsx文件中最大列数
col = ws.max_column
for i in range(1, rows + 1): # 行(从第一行第一列开始取)
for j in range(1, col + 1): # 列
print(ws.cell(i,j).value)
(‘./成都链家二手房.xlsx’)
从工作簿中找工作表
ws = file[‘成都链家二手房数据汇总’]
max_row:获取xlsx文件中最大行数
rows = ws.max_row
max_column:获取xlsx文件中最大列数
col = ws.max_column
for i in range(1, rows + 1): # 行(从第一行第一列开始取)
for j in range(1, col + 1): # 列
print(ws.cell(i,j).value)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TaBgj3OX-1656673315519)(C:\Users\Asus\AppData\Roaming\Typora\typora-user-images\image-20220701175546524.png)]