将文件行拆分为数组,然后解析为字典

2024-05-13 01:53:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我在试着读一个文件。我想将文件的行解析为字典,但似乎无法将该部分放入数组中。在

我的文件看起来像:

记录:

2014-05-14,12:16:26,subject,{MSGTYPE="Personal" NAME="Fred" ADDRESS="Flat1" AGE=92 GENDER="M"}

2014-05-15,14:36:26,subject,{MSGTYPE="Personal" NAME="George" ADDRESS="Flat2"       AGE=-20 GENDER="M"}

2014-05-13,16:49:26,subject,{MSGTYPE="Personal" NAME="Ringo" ADDRESS="Flat3"    AGE=-36 GENDER="M"}

2014-05-12,14:45:26,subject,{MSGTYPE="Personal" NAME="Brian" ADDRESS="Flat4" AGE=-85 GENDER="M"}

2014-05-11,12:43:26,subject,{MSGTYPE="Personal" NAME="Paul" ADDRESS="Flat5" AGE=-33 GENDER="M"}

所以计划是用“,”来分割它。然后取值4并将其放入自己的字典中。但我的分裂出了问题。在

^{pr2}$

我得到了一个错误:

Traceback (most recent call last):
    File "FAST_RV_Tests.py", line 70, in <module>
IndexError: index out of range: 1

正如我所料,第一次打印返回的是“1:2014-05-14”。但阵列中没有其他东西。在


Tags: 文件nameage字典address记录数组fred
3条回答

您的错误出现在第二行format上:

print '2: {1}'.format(valuesArray[1])  

您只格式化了一个值,因此{1}应该是{0}

正确使用{1}应该是如果您有这样的东西:

^{pr2}$

您的数据文件中可能有空行,拆分这样的行将不会返回具有足够项的列表。在

在循环中,如果遇到空行,则应调用continue。在

另一个提示是调用split,第二个参数告诉您应该应用多少个拆分。这将允许获取最后的JSON部分,您可以在其上使用json.loads来获取内容

如果我修改您的数据以反映您关于在末尾有JSON数据的声明

014-05-14,12:16:26,subject,{"MSGTYPE":"Personal", "NAME":"Fred", "ADDRESS":"Flat1", "AGE": 92, "GENDER":"M"}

2014-05-15,14:36:26,subject,{"MSGTYPE":"Personal", "NAME":"George", "ADDRESS":"Flat2", "AGE": -20, "GENDER":"M"}

2014-05-13,16:49:26,subject,{"MSGTYPE":"Personal", "NAME":"Ringo", "ADDRESS":"Flat3", "AGE": -36, "GENDER":"M"}

2014-05-12,14:45:26,subject,{"MSGTYPE":"Personal", "NAME":"Brian", "ADDRESS":"Flat4", "AGE": -85, "GENDER":"M"}

2014-05-11,12:43:26,subject,{"MSGTYPE":"Personal", "NAME":"Paul", "ADDRESS":"Flat5", "AGE": -33, "GENDER":"M"}

它的工作原理如下:

^{pr2}$

print '2: {1}'.format(valuesArray[1])不应该是 print '2: {0}'.format(valuesArray[1])?在

格式中只有一个参数,索引1超出范围。在

相关问题 更多 >