python3读取csv文件-python3使用类型转换读取csv文件

我有两个问题:

a)Python csv模块无法正确处理特定csv文件

我在database.csv中有以下数据"AAAAAAAA" , 5.4817, 0.0000, 0.0000, 0.0000, 65.8370

"n,m-BBBBBBBBB" , 1.7897, 675.3787, 1234.7865, 47.0000, 42.0070

请注意,双引号和逗号之间有空格。

我使用下面的脚本来读取文件,第一列将被解码为"AAAAAAAA ",而不是{}

^{pr2}$

输出是['AAAAAAAA ', ' 5.4817', ' 0.0000', ' 0.0000', ' 0.0000', ' 65.8370']

['n,m-BBBBBBBBB ', ' 1.7897', ' 675.3787', ' 1234.7865', ' 47.0000', ' 42.0070']

为了去掉空白,我这样做import csv

def read_csv_data(path):

col_type = [str, float, float, float, float, float]

with open(path, 'rU') as f:

f_csv = csv.reader(f)

for row in f_csv:

row = tuple(cast(val.strip()) for cast, val in zip(col_type, row))

yield row

for row in read_csv_data('database.csv'):

print(row)

输出现在是('AAAAAAAA', 5.4817, 0.0, 0.0, 0.0, 65.8370)

('n,m-BBBBBBBBB', 1.7897, 675.3787, 1234.7865, 47.0, 42.007)

b)使用namedtuple将csv数据读入内存

对于相同的csv文件database.csv,我使用另一个脚本:import csv

from collections import namedtuple

def read_csv_data(path):

col_type = [str, float, float, float, float, float]

Gas = namedtuple("Gas", ["gas", "sf", "h1", "h2", "h3", "m"])

with open(path, 'rU') as f:

f_csv = csv.reader(f)

for row in f_csv:

row = list(cast(val.strip()) for cast, val in zip(col_type, row))

for row2 in map(Gas._make, row):

yield row2

for row in read_csv_data('database.csv'):

print(row)

错误是Traceback (most recent call last):

File "read_dict.py", line 17, in

for row in read_csv_data('database.csv'):

File "read_dict.py", line 13, in read_csv_data

for row2 in map(Gas._make, row):

File "", line 21, in _make

TypeError: Expected 6 arguments, got 8

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值