【发布时间】:2014-01-31 15:48:39
【问题描述】:
我有一个包含税务数据的 csv 文件。我将数据读入嵌套列表,使其格式如下:
['Alabama', 'Single rate', '0.02', '0.04', '5']
['Alabama', 'Single bracket', '500', '3000']
['Alabama', 'Couple rate', '0.02', '0.04', '0.05']
['Alabama', 'Couple bracket', '1000', '6000']
我希望能够输入状态和婚姻状况,然后返回相关的费率和括号列表。我在这里做过,但我觉得有一个更简单的方法。有什么建议吗?
search_state = 'Alabama'
search_status = 'Single'
rates = []
brackets = []
for sublist in cleaned_data:
if search_state in sublist[0] and search_status in sublist[1]:
if 'rate' in sublist[1]:
rates = [eval(x) for x in sublist[2:]]
if 'bracket' in sublist[1]:
brackets = [eval(x) for x in sublist[2:]]
【问题讨论】:
-
从您的帖子中不清楚
cleaned_data的确切格式。 -
如果您希望能够使用大量数据多次执行此操作,这正是数据库存在的目的。 stdlib
sqlite3模块非常好。 -
你基本上永远不会想要使用
eval。如果你有一个像'"foo"'这样的字符串,并且想得到一个像'foo'这样的字符串,试试s[1:-1],或者,如果你真的,真的坚持,ast.literal_eval(s)。 -
sublist是一个无助于揭示数据格式的名称。您最终可能会通过尝试给出清晰的名称来编写清晰的代码,例如for states, statuses in cleaned_data:。 (我不知道你必须知道导致名称的真正含义的实际格式。) -
或者你的原始文件是什么样子的?
标签: python python-3.x