我在一个文件中逐行阅读。各行之间用"|“分隔。由于值一旦从文件中读取就会被解释为字符串,所以我希望将它们转换为正确的表示形式(现在是每个"column“值的数据类型)。
因此,我编写了一个小的“转换”方法,如下所示:
def translateType(self, dataType):
if dataType == "INTEGER":
return int
elif dataType == "FLOAT":
return float
elif dataType == "STRING":
return str我认为这并不是一个令人满意的解决方案,因为这个代码不是很难看,而且当有更多的数据类型需要支持时,它会变得很痛苦。
你有什么想法让这种“排版”变得更好,更具可扩展性吗?
发布于 2011-11-03 12:48:01
使用字典,例如:
def translateType(t):
return {"INTEGER": int, "FLOAT": float, "STRING": str}.get(t, None)或者,如果性能是必需的(配置文件优先),则在参数列表中定义dict,这样就不需要在每次调用函数时都创建它:
def translateType(t, types={"INTEGER": int, "FLOAT": float, "STRING": str}):
return types.get(t, None)发布于 2011-11-03 12:52:17
直接使用字段类型列表,而不是字符串:
>>> line = 'white fang|jack london|1888|7.50'
>>> types = [str, str, int, float]
>>> [t(s) for t, s in zip(types, line.split('|'))]
['white fang', 'jack london', 1888, 7.5]https://stackoverflow.com/questions/7990365
复制相似问题