【Python】读写CSV文件


简单介绍如何读写CSV文件


1、读CSV

两种方法,用pandas的read_csv函数读,和用Python的读文件open读。

1.1 用函数pandas.read_csv读

如果你知道CSV文件的列属性,可以直接用pd.read_csv读取后,用列属性得到想要的内容:

如下例子中,是获取列属性acc大于0.7的所有记录。

import pandas as pd
df = pd.read_csv('table.csv')
case = df[df.acc < 0.7]

1.2 用reader读

直接用csv中的reader读。


import csv
file = open("Data.csv", "r")
reader = csv.reader(file)  #返回迭代类型
data = []
for item in reader:
    print(item)
    data.append(item)
print(data)
csvFile.close()

1.3 用open函数读

用open读就跟普通文件读一样。CSV一行中,每列使用逗号分隔的。

例如下面例子中,读取了每一行到一个list,然后根据逗号对string分片。

merge_class = open("file.csv", "r")
lines = merge_class.readlines()
dict = defaultdict(list)
for j in range(len(lines)):
    line = re.split(r"[\,]", lines[j])
    dict[line[0]].append(line[1])

2、写CSV

2.1 用to_csv写

如果你用pandas.DataFrame创建了一个csv对象,规定了列属性,就可以用to_csv写入。如下。

import pandas as pd
df = pd.read_csv('table.csv')
case = df[df.acc < 0.7]
print type(case)
print case
file = pd.DataFrame(case, columns=['label', 'acc'])
file.to_csv('cases.csv')

2.2 用csv.writer写

可以定义一个writer,然后就可以每次向文件中写入一行,注意的是,如果有多列,这一行的字符串要用逗号分隔。

import csv
flabel = open("label.txt", "r")
file = open("file.csv", "w", newline='')#newline是防止两行中间空一行
writer = csv.writer(file)
lines = flabel.readlines()
for i in range(len(lines)):
    line = re.split(r"[\s\n]", lines[i])
    writer.writerow(line[0:len(line)-1])

2.3 其他

暂时就先这样吧。


猜你喜欢

转载自blog.csdn.net/liuxiao214/article/details/80177006