python读取csv数据存入数组(python如何读取csv数据)
用python处理csv文件,最好可以将里面的文本信息转成一个二维数组的形式,具体如下
思路如下:
导入csv库;
打开文件,并用csv库函数reader读入数据;
csv读入的数据是一行一行的,所以通过循环语句把读到的数据放入到数组里
import?csv?#?必要库导入
filepath?=?'test.csv'?#?定义文件名称,本文件要与当前的.py文件要在同一文件夹下,不然要用绝对路径
with?open(filepath,'r')?as?csvfile:?#?打开数据文件
????reader?=?csv.reader(csvfile)?#?用csv的reader函数读取数据文件
????header?=?next(reader)?#?读取数据文件的表头
????data?=?[]?#?定义一个空数组用于保存文件的数据
????for?line?in?reader:?#?循环读取数据文件并保存到数组data中
????????data.append(line)?#?line是个一维数组,是数据文件中的一行数据
print(header)?#?表头
print(data)?#?读取的二维数组
python如何读取CSV信息存入数据库
class?DBI(object):
????"""database?interface"""
????def?__init__(self,?conn):
????????"""keep?connection"""
????????self._conn?=?conn
????def?store(self,?sql,?data):
????????"""store?data?into?database?with?given?sql"""
????????curr?=?self._conn.cursor()
????????curr.executemany(sql,?data)
????????self._conn.commit()
????????curr.close()
????def?execute(self,?sql,?*args,?**kwgs):
????????"""execute?sql?on?database"""
????????curr?=?self._conn.cursor()
????????curr.execute(sql,?*args,?**kwgs)
????????self._conn.commit()
????????curr.close()
def?ipager(serial,?pagesize):
????"""make?serial?page?by?page"""
????buff?=?[]
????for?row?in?serial:
????????buff.append(row)
????????if?len(buff)?=?pagesize:
????????????send,?buff,?=?buff,?[]
????????????yield?send
????if?len(buff):
????????yield?buff
def?tester():
????import?csv
????import?sqlite3
????
????dbi?=?DBI(sqlite3.connect(database=":memory:"))
????dbi.execute("create?table?tb_tester?(id,?key,?val,?tm)")
????sql="insert?into?tb_tester?values?(?,??,??,??)"
????with?open(todofile,?'rb')?as?handle:
????????for?rows?in?ipager(csv.reader(handle),?512):
????????????dbi.store(sql,?rows)
csv模块是python处理csv类文件的强大工具; 参考
ipager将大数据流按指定大小分页, 以节省资源并提升效率;
DBI提供统一的数据库接口操作方法;
请问python中如何读取一个csv或者dat文件,并储存为一个二维数组?
和普通文件一样读取。csv中文件数据项有逗号划分开。
infile = open("data.csv", 'r')
for line in infile:
data = line.rstrip().split(',')
print(data)
怎么样Python从csv文件中读出并将第一红框中的数据保存为数组,第二红框中如果为是则为1,否则为0?
data=[]
with open("【csv文件路径】") as f:
# readline先读掉第一行
while (line := f.readline()) != "":
line = line.split(',')
data.append(line[1:2]+[1 if line[4] == "是" else 0])
说明:
:= 海象运算符 3.8语法
# 作用是一边赋值,一边让表达式的值加入运算
# 比如 (i := 25) + 1
# 会返回26,并且拥有一个名为i的变量
# 3.7-可改为以下代码
# line = f.readline()
# while line != "":
value1 if exp else value2如果exp成立的话,返回value1,否则返回value2