⑴ 求python大神指导,一个csv文件,把其中每一列的数据提取出来单独保存为一个csv文件
csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格:
就可以存储为csv文件,文件内容是:
No.,Name,Age,Score
1,mayi,18,99
2,jack,21,89
3,tom,25,95
4,rain,19,80
假设上述csv文件保存为"test.csv"
1.读文件
如何用Python像操作Excel一样提取其中的一列,即一个字段,利用Python自带的csv模块,有两种方法可以实现:
第一种方法使用reader函数,接收一个可迭代的对象(比如csv文件),能返回一个生成器,就可以从其中解析出csv的内容:比如下面的代码可以读取csv的全部内容,以行为单位:
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#读
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.reader(f)
rows = [row for row in reader]
print(rows)
得到:
[['No.', 'Name', 'Age', 'Score'],
['1', 'mayi', '18', '99'],
['2', 'jack', '21', '89'],
['3', 'tom', '25', '95'],
['4', 'rain', '19', '80']]
要提取其中某一列,可以用下面的代码:
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#读取第二列的内容
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.reader(f)
column = [row[1] for row in reader]
print(column)
得到:
['Name', 'mayi', 'jack', 'tom', 'rain']
注意从csv读出的都是str类型。这种方法要事先知道列的序号,比如Name在第2列,而不能根据'Name'这个标题查询。这时可以采用第二种方法:
第二种方法是使用DictReader,和reader函数类似,接收一个可迭代的对象,能返回一个生成器,但是返回的每一个单元格都放在一个字典的值内,而这个字典的键则是这个单元格的标题(即列头)。用下面的代码可以看到DictReader的结构:
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#读
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.DictReader(f)
column = [row for row in reader]
print(column)
得到:
[{'No.': '1', 'Age': '18', 'Score': '99', 'Name': 'mayi'},
{'No.': '2', 'Age': '21', 'Score': '89', 'Name': 'jack'},
{'No.': '3', 'Age': '25', 'Score': '95', 'Name': 'tom'},
{'No.': '4', 'Age': '19', 'Score': '80', 'Name': 'rain'}]
如果我们想用DictReader读取csv的某一列,就可以用列的标题查询:
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#读取Name列的内容
with open("test.csv", "r", encoding = "utf-8") as f:
reader = csv.DictReader(f)
column = [row['Name'] for row in reader]
print(column)
得到:
['mayi', 'jack', 'tom', 'rain']
2.写文件
读文件时,我们把csv文件读入列表中,写文件时会把列表中的元素写入到csv文件中。
#!/usr/bin/python3
# -*- conding:utf-8 -*-
__author__ = 'mayi'
import csv
#写:追加
row = ['5', 'hanmeimei', '23', '81']
out = open("test.csv", "a", newline = "")
csv_writer = csv.writer(out, dialect = "excel")
csv_writer.writerow(row)
得到:
⑵ python 怎么读csv文件
CSV文件本质上就是文本文件,只不过每行的数据用逗号分隔。
所以你当成文本文件打开一行一行的读然后拆分就可以了。
data=[]
withopen(r'd: empdemo.csv','r')ascsv_file:
forlineincsv_file:
data.append(line.strip().split(','))
print(data)
#另外Python标准库里有个CSV模块可以用。
importcsv
withopen(file_path,'rb')ascsv_file:
data=list(csv.reader(csv_file))[1:]#去掉首行的列名
还有就是可以用Pandas这个库,dataframe有导入csv功能。
⑶ csv文件怎么打开 使用Python读取和写入CSV文件
csv文件本质上是一个文本文件,具体的读取和写入方法有两种:
直接对csv文件进行文件读写操作,每一行是一条记录,按行读取即可,简单代码如下:
with open("XXX.csv","wr") as f:
f.readline()
f.write()
2.使用第三方库中的csv文件读写函数(本质上还是使用python的文件读写方法),如科学计算包pandas包中就有read_csv() to_csv()等函数,其他的一些第三方包里也有,可以自行查询。
两种方法各有优劣,第一种方法的优点就是可控性强,但是代码相对较多,对于python2编码处理很麻烦;第二种方法的优点是代码量小,调用方便,处理编码问题相对容易(在函数中加一个encoding参数即可),但是代码内部比较复杂,可控性较差
⑷ python CSV 取值问题,新手,高分。
importcsv
Title=['Name','Age','Sex']
Name=['张三','李四','王二']
Age=['30','20','10']
Sex=['男','男','未知']
foriinrange(len(Title)):
list=[]
list.append(Name[i])
list.append(Age[i])
list.append(Sex[i])
print(list)#把这个写入文件
我的版本是3.2的数据一直写不进文件里,那我把list部分打印出来,你直接放在写函数就可以了
⑸ Python中通过csv的writerow输出的内容有多余的空行
有可能是csv方言(dialect)的问题吧
csv方言参数中有一个 lineterminator,他的作用是定义csv结束一行的符号, 默认值是 '\r\n',如果有需要,可以尝试修改
csv.register_dialect(lineterminator='\n',)
如果还是不行的话,有可能是你writerow的行前面多了换行符。
⑹ python中怎么读取csv文件
Python读取CSV文件方法如下:
如下是一个CVS文件
使用Python打开CSV可以直接使用open函数打开,然后使用reader函数读取内容,实现代码如下:
运行结果如下:
更多Python相关技术文章,请访问Python教程栏目进行学习!以上就是小编分享的关于python中怎么读取csv文件的详细内容希望对大家有所帮助,更多有关python教程请关注环球青藤其它相关文章!
⑺ python怎么将读出来的文件放到列表
csv文件的读取:
前期工作:在定义的py文件里边创建一个excel文件,并另存为csv文件,放入三行数据,我这里是姓名+年龄(可以自己随意写)
首先我们要在python环境里导入csv板块(测试小白的我喜欢用pycharm)
啦啦啦,开不开心,刺不刺激,纯小白内容,谢谢大家的阅读,欢迎留言交流,不要忘记我,我就是宇宙无敌的python小白白!
⑻ python怎么打印csv文件中的内容
方法一:
import csv
f = open("C:\\Users\\windows10\\Desktop\\Python练习\\文本流\\raw循环合并.csv")
csv_reader = csv.reader(f,dialect='excel') # dialect='excel'为EXCEL编码风格,否则无法读取首行
for line in csv_reader:
print(line)123456
方法二:
import csv
f = open("C:\\Users\\windows10\\Desktop\\Python练习\\文本流\\raw循环合并.csv")
csv_reader = csv.reader(f) # 分割符号,默认,根据不同情况进行设置
data= []
for line in csv_reader:
data.append([x for x in line[:len(line)]]) #[x for x in line[:len(line)]]:形成一个行列表,对每行逐个字符串,进行追加; data.append():对添加一个行列表
print(data)
⑼ python中读取csv文件
python中读取csv方法有3种:
第一种,普通方法读取(open函数打开,然后使用for循环读取内容);
第二种,使用用CSV标准库读取;
第三种,用pandas模块读取。
⑽ python csv文件放到哪里
使用Python的csv模块
csv模块中的函数
reader(csvfile, dialect='excel', **fmtparams)11
参数说明:
csvfile,必须是支持迭代(Iterator)的对象,可以是文件(file)对象或者列表(list)对象,如果是文件对
象,打开时需要加”b”标志参数。
dialect,编码风格,默认为excel的风格,也就是用逗号(,)分隔,dialect方式也支持自定义,通过调用register_dialect方法来注册,下文会提到。
fmtparam,格式化参数,用来覆盖之前dialect对象指定的编码风格。
加载文件代码:
import csv
def loadCSVfile1():
list_file = []
with open('train.csv','rb') as csv_file:
all_lines=cvs.reader(csv_file)
for one_line in all_lines:
list_file.append(one_line)
list_file.remove(list_file[0])
arr_file = array(list_file)
label = arr_file[:, 0]
data = arr_file[:, 1:]
return data, label
加载csv核心部分还是
其中,‘rb’中的r表示“读”模式,因为是文件对象,所以加‘b’。open()返回了一个文件对象
myFile,reader(myFile)只传入了第一个参数,另外两个参数采用缺省值,即以excel风格读入。reader()返回一个
reader对象all_lines,all_lines是一个list,当调用它的方法lines.next()时,会返回一个string。上面程序的效果是将csv
文件中的文本按行打印,每一行的元素都是以逗号分隔符’,’分隔得来。