Python中csv文件的写入与读取方法例子
作者:初见~
1.csv文件介绍
CSV文件是一种常见的数据格式,它以逗号分隔不同的字段,每行表示一个数据记录。在Python中,我们可以使用csv模块来读取和写入CSV文件。
2.写入CSV文件
在Python中,我们可以使用csv模块的writer对象来写入CSV文件。下面是一个例子:
import csv # 创建要写入的数据 data = [ ['张三', 20, '男'], ['李四', 25, '女'], ['王五', 30, '男'] ] # 打开文件,指定写入模式 with open('data.csv', 'w', newline='') as file: # 创建csv写入对象 writer = csv.writer(file) # 写入表头 writer.writerow(['姓名', '年龄', '性别']) # 写入数据 writer.writerows(data)
在上面的例子中,我们首先创建了要写入的数据,它是一个包含多个列表的列表。然后使用open()
函数打开文件,并指定写入模式。newline=''
表示不使用额外的换行符。接着创建了一个csv写入对象writer
,使用writerow()
方法写入表头,使用writerows()
方法写入数据。最后,使用with
语句来自动关闭文件。
需要注意的是,写入CSV文件时,需要将数据转换成字符串格式。如果写入的数据中包含逗号、双引号等特殊字符,需要进行处理。例如:
import csv # 创建要写入的数据 data = [ ['张三', 20, '男'], ['李四', 25, '女'], ['王五', 30, '男'], ['"Tom, Jerry"', 35, '男'] ] # 打开文件,指定写入模式 with open('data.csv', 'w', newline='') as file: # 创建csv写入对象 writer = csv.writer(file) # 写入表头 writer.writerow(['姓名', '年龄', '性别']) # 写入数据 for row in data: # 将包含特殊字符的数据进行处理 row[0] = row[0].replace('"', '""') row[0] = f'"{row[0]}"' writer.writerow(row)
在上面的例子中,我们创建了一个包含特殊字符的数据,它包含逗号和双引号。为了写入这个数据,我们需要将双引号进行转义,并在数据前后加上双引号。具体来说,我们使用replace()
方法将双引号替换成两个双引号,然后使用f-string
将数据前后加上双引号。
3.读取CSV文件
在Python中,我们可以使用csv模块的reader对象来读取CSV文件。下面是一个例子:
import csv # 打开文件,指定读取模式 with open('data.csv', 'r') as file: # 创建csv读取对象 reader = csv.reader(file) # 遍历每一行数据 for row in reader: print(row)
在上面的例子中,我们使用open()
函数打开文件,并指定读取模式。然后创建了一个csv读取对象reader
,使用for
循环遍历每一行数据,并使用print()
函数输出。
需要注意的是,在读取CSV文件时,每一行数据都会被解析成一个列表。如果CSV文件中有表头,第一行数据就是表头,可以使用next()
函数跳过:
import csv # 打开文件,指定读取模式 with open('data.csv', 'r') as file: # 创建csv读取对象 reader = csv.reader(file) # 跳过表头 next(reader) # 遍历每一行数据 for row in reader: print(row)
在上面的例子中,我们使用next()
函数跳过了表头。
另外,如果CSV文件中包含特殊字符,例如逗号、双引号等,需要使用csv.reader
的quotechar
参数来指定转义字符。例如:
import csv # 打开文件,指定读取模式 with open('data.csv', 'r') as file: # 创建csv读取对象 reader = csv.reader(file, quotechar='"') # 遍历每一行数据 for row in reader: print(row)
在上面的例子中,我们使用quotechar='"'
来指定双引号为转义字符。这样,包含双引号的数据就可以正确解析了。
总结
到此这篇关于Python中csv文件的写入与读取的文章就介绍到这了,更多相关Python csv文件写入与读取内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!