Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何读取文件中的特定行并将它们插入python中的词典?_Python_File_Sorting_Dictionary - Fatal编程技术网

如何读取文件中的特定行并将它们插入python中的词典?

如何读取文件中的特定行并将它们插入python中的词典?,python,file,sorting,dictionary,Python,File,Sorting,Dictionary,我有一个文本文件,格式如下: 2014-04-10 Arjun 22 Class 10 60 Anil 23 Class 09 85 2013-03-10 Jhon 21 Class 10 78 如果我希望字典如图所示,代码应该是什么 {'2014_Arjun' : ['22','Class 10','60'],'2014_Anil':['23','Class 09','85'],'2013_Jhon':['21','Class

我有一个文本文件,格式如下:

    2014-04-10
    Arjun 22  Class 10   60
    Anil  23  Class 09   85
    2013-03-10
    Jhon  21  Class 10   78
如果我希望字典如图所示,代码应该是什么

  {'2014_Arjun' : ['22','Class 10','60'],'2014_Anil':['23','Class 09','85'],'2013_Jhon':['21','Class10','78']}   

想法是迭代文件行,尝试将行解析到via中-如果成功,记住日期的年份,如果不成功-通过解析行并写入
数据
dict:

from datetime import datetime
import re


data = {}
pattern = re.compile('(\w+)\s+(\d+)\s+(\w+\s\d+)\s+(\d+)')
with open('input.txt') as f:
    for line in f:
        try:
            year = datetime.strptime(line.strip(), '%Y-%m-%d').year
        except ValueError:
            item = pattern.match(line.strip()).groups()
            data[str(year) + "_" + item[0]] = item[1:]

print data
印刷品:

{'2013_Jhon': ('21', 'Class 10', '78'), 
 '2014_Arjun': ('22', 'Class 10', '60'), 
 '2014_Anil': ('23', 'Class 09', '85')}

确保你明白这里发生了什么。如果没有-请随时发表评论。

如果您真的使用TSV文件格式(制表符分隔的值),这是我能想到的最简单的解决方案:


“结果”字典就是你想要的:)

我不打算为你写这篇文章,但它应该会帮助你走上正轨

如果您的文件格式要一致

YYYY-MM-DD
Name ## Class ## ##
那么下面的内容就相当简单了

您可以执行以下操作,检查该行是否包含“类”。
如果没有(这意味着该行包含YYYY-MM-DD),那么您现在有了字典键前缀,可以在“-”上拆分以提取年份。
如果它包含类,那么您现在可以完成字典前缀(YYYY\u Name),并在以d[“yyy\u Name”]为键的列表中分配剩余值。

谢谢..我理解了代码!小查询,如何将相同的值插入到字典中,但如果没有提到日期FORMAT,则只需一些字符串“Class Data-1”或Class Data-2!请帮帮我@user3347570无法在没有示例输入的情况下说出。也许,最好用单独的主题/问题提问,谢谢。
YYYY-MM-DD
Name ## Class ## ##