>  기사  >  백엔드 개발  >  Python 처리 csv 파일 예제에 대한 자세한 설명

Python 처리 csv 파일 예제에 대한 자세한 설명

零下一度
零下一度원래의
2018-05-17 16:24:5810180검색

Python은 csv 파일을 처리합니다.

CSV(Comma-Separated Values)는 쉼표로 구분된 값으로 Excel에서 열고 볼 수 있습니다. 일반 텍스트이므로 모든 편집기에서 열 수 있습니다. Excel 파일과 달리 CSV 파일에서는

  • 값에 유형이 없으며 모든 값은 문자열입니다.

  • 글꼴 색상 및 기타 스타일을 지정할 수 없습니다.

  • 셀의 너비와 높이를 지정할 수 없습니다. 셀을 병합할 수 없습니다

  • 여러 워크시트가 없습니다

  • 이미지 차트를 삽입할 수 없습니다

CSV 파일에서는 , 를 구분 기호로 사용하여 두 셀을 구분합니다. 이와 같이 a,,ca 셀과 c 셀 사이에 빈 셀이 있다는 의미입니다. 등. ,作为分隔符,分隔两个单元格。像这样a,,c表示单元格a和单元格c之间有个空白的单元格。依此类推。

不是每个逗号都表示单元格之间的分界。所以即使CSV是纯文本文件,也坚持使用专门的模块进行处理。Python内置了csv模块。先看看一个简单的例子。

从CSV文件中读取数据

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.reader(f)print(list(reader))

data不能直接打印,list(data)最外层是list,里层的每一行数据都在一个list中,有点像这样

[['name', 'age'], ['Bob', '14'], ['Tom', '23'], ...]

于是我们可以这样访问到Bob的年龄reader[1][1], 在for循环中遍历如下

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.reader(f)for row in reader:# 行号从1开始print(reader.line_num, row)

要注意的是,reader只能被遍历一次。由于reader是可迭代对象,可以使用next方法一次获取一行。

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.reader(f)# 读取一行,下面的reader中已经没有该行了head_row = next(reader)for row in reader:# 行号从2开始print(reader.line_num, row)

写数据到csv文件中

有reader可以读取,当然也有writer可以写入。一次写入一行,一次写入多行都可以。

import csv# 使用数字和字符串的数字都可以datas = [['name', 'age'],
         ['Bob', 14],
         ['Tom', 23],
        ['Jerry', '18']]with open('example.csv', 'w', newline='') as f:
    writer = csv.writer(f)for row in datas:
        writer.writerow(row)        # 还可以写入多行writer.writerows(datas)

如果不指定newline=''

모든 쉼표가 셀 간의 경계를 나타내는 것은 아닙니다. 따라서 CSV가 일반 텍스트 파일이더라도 처리를 위해 전용 모듈을 사용해야 합니다. Python에는 csv 모듈이 내장되어 있습니다. 먼저 간단한 예를 살펴보겠습니다.

CSV 파일에서 데이터 읽기

name,age
Bob,14
Tom,23
Jerry,18
name,age
Bob,14
Tom,23
Jerry,18

data는 목록(데이터)의 가장 바깥쪽 레이어가 목록이고 내부 레이어의 각 데이터 행은 목록에 있습니다. like this

import csv

filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'with open(filename) as f:
    reader = csv.DictReader(f)for row in reader:# Max TemperatureF是表第一行的某个数据,作为keymax_temp = row['Max TemperatureF']print(max_temp)

그래서 우리는 reader[1][1]와 같이 Bob의 나이에 접근할 수 있으며, for 루프에서 다음과 같이 순회합니다

import csv

headers = ['name', 'age']

datas = [{'name':'Bob', 'age':23},
        {'name':'Jerry', 'age':44},
        {'name':'Tom', 'age':15}
        ]with open('example.csv', 'w', newline='') as f:# 标头在这里传入,作为第一行数据writer = csv.DictWriter(f, headers)
    writer.writeheader()for row in datas:
        writer.writerow(row)        # 还可以写入多行writer.writerows(datas)

reader는 한 번만 순회할 수 있다는 점에 유의해야 합니다. . reader는 반복 가능한 객체이므로 next 메서드를 사용하여 한 번에 한 행을 가져올 수 있습니다.

rrreee🎜csv 파일에 데이터 쓰기🎜🎜읽을 수 있는 독자도 있고, 쓸 수 있는 작가도 있습니다. 한 번에 한 줄씩 쓸 수도 있고, 한 번에 여러 줄을 쓸 수도 있습니다. 🎜rrreee🎜newline=''를 지정하지 않으면 작성된 각 줄마다 빈 줄이 작성됩니다. 위의 코드는 다음을 생성합니다. 🎜rrreee🎜DictReader 및 DictWriter 개체🎜🎜DictReader를 사용하면 테이블의 첫 번째 행(일반적으로 헤더)을 키로 사용하여 사전처럼 데이터를 작동할 수 있습니다. 행의 해당 키에 해당하는 데이터에 액세스하려면 키를 사용하세요. 🎜rrreee🎜DictWriter 클래스를 사용하면 사전 형태로 데이터를 쓸 수 있고, 키도 헤더(테이블의 첫 번째 행)입니다. 🎜rrreee🎜🎜🎜

위 내용은 Python 처리 csv 파일 예제에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.