我注意到一个来自Reading Data from CSV file...的用户647772的示例
data = """True,foo,1,2.3,baz
False,bar,7,9.8,qux"""
reader = csv.reader(StringIO.StringIO(data), delimiter=",")
parsed = (({'True':True}.get(row[0], False),
row[1],
int(row[2]),
float(row[3]),
row[4])
for row in reader)
getBackData = list(parsed)
我找不到与为“已解析”变量编写的代码相关的CSV阅读器库。如果有人能给我指出python网站中的正确文档,我将不胜感激
另外,我想知道是否有一种方法可以在运行时确定数据类型并设置解析变量的值(如上所述)。那么,如果我修改上述代码,以下实现是否“有效”:
parsed = "((row[0], int(row[1]), int(row[2]), int(row[3]), row[4], row[5]) for row in rawReader)"
及
getBackData = list(eval((parsed)))
还是有更好的办法
parsed
变量对csv.reader
并不是特别的(没有CSV读取器库,csv
是Python std库中的一个模块)。此语法是Pythongenerator expression
。虽然这段代码有效,但在试图说明一个概念时,将多个概念压缩成一个语句并不总是最好的此代码的一种更适合初学者的形式可能如下所示:
更干净的方法是将所有这些转换器推入
convert_row
函数,然后使用列表构建getBackData
:然后您可以随意修改
convert_row
函数,但是reader
和getBackData
结构保持不变编辑:获取类型(没有经过很好的测试,但这就是想法)
相关问题 更多 >
编程相关推荐