繁体   English   中英

从 csv 文件读取/写入字符串、整数和字符串列表的字典

[英]read/write dictionary of strings, integers, and lists of strings from/to csv file

我试过搜索这个问题,但只能单独找到字符串、整数或列表,当我尝试组合它们时,这些解决方案似乎会发生冲突。

我正在编写一个程序,为用户分配家务,考虑到:用户可用性、他们一天可以做的数量、他们不能做的任何家务、他们分配的最后一个家务以及前一周的作业。 我仍在研究数据结构,但到目前为止,似乎使用多个 csv 文件、列表和字典是 go 的方法。 我考虑过使用类,但我不确定如何使用 go。

我正在使用 csv 和 pandas 模块的组合来读取/写入文件。 我发现 csv 模块(在大多数情况下)以我想要的格式写入文件,并且 pandas 模块(在大多数情况下)以我想要的方式读取文件。

这是我的名为 users.csv 的 csv 文件(最终 LastChore 列将由单个家务或家务列表填充,或者我可能只是删除它并使用不同的字典):

用户 可用的 DayMax 严格 最后的家务
杰尔 [“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”] 1 没有任何 没有任何
鲍勃 ['周二','周三','周五','周六','周日'] 1 垃圾 没有任何
萨拉 ['星期三','星期四','星期五'] 1 没有任何 没有任何
凯利 [“周一”、“周二”、“周三”、“周四”、“周五”、“周六”、“周日”] 2 真空 没有任何

这是字典的结果列表:

[{'User': 'Jer', 'Available': "['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']", 'DayMax': 1, 'Restrict': 'None', 'LastChore': 'None'}, {'User': 'Bob', 'Available': "['Tue', 'Wed', 'Fri', 'Sat', 'Sun']", 'DayMax': 1, 'Restrict': 'garbage', 'LastChore': 'None'}, {'User': 'Sara', 'Available': "['Wed', 'Thu ', 'Fri']", 'DayMax': 1, 'Restrict': 'None', 'LastChore': 'None'}, {'User': 'Kelly', 'Available': "['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']", 'DayMax': 2, 'Restrict': 'vacuum', 'LastChore': 'None'}]

如您所见,我的列表用“”括起来。

更新:

我通过在 to_csv 行中添加“index=False”解决了以下问题。

dataframe.to_csv('users.csv',index=False)

我会将 rest 留在这里,以供其他遇到此问题的人使用。 我仍然对我的字典中的列表有问题,但它们周围有“”。

最重要的是,在运行该程序后,它会在每次运行它时不断向我的文件中添加列。

这是 csv 文件运行 4 次后的结果:

未命名:0.2 未命名:0.1 未命名:0 用户 ...
0 0 0 0 杰尔 ...
1 1 1 1 鲍勃 ...
2 2 2 2 萨拉 ...
3 3 3 3 凯利 ...

以及由此产生的字典:

[{'未命名:0.2':0,'未命名:0.1':0,'未命名:0':0,'用户':'Jer',...

这是我的代码:

import csv
import pandas

#Loading user data from files and creating dictionaries.
def loadUsers():
    try:
        dataframe = pandas.read_csv('users.csv')
        userList = dataframe.to_dict('records')
        dataframe.to_csv('users.csv')
    except FileNotFoundError:
        print("Users database missing. Creating file")
        makeFile("users.csv")
    except Exception as e:
        print("Problem with files")
    return userList

注意:我一直在使用 loadUsers function 并在 excel 中编辑 csv。 Currently I have a makeFile function that creates the csv file with the header row only using csv module, I have yet to write the (newer) code that writes all this information to the csv file. 最初我使用的是文本文件,现在将代码切换到 csv 文件。

我最终通过在每个以字符串形式出现的列表上使用 ast.literal_eval() 来解决我的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM