繁体   English   中英

从.txt文件中提取数据

[英]Extracting data from .txt file

对于我的编程工作,其中一个功能涉及从文本文件(推特数据)获取输入并返回推特信息的元组(有关示例文件的正确结果,请参阅doctests)。

样本文本文件: http : //pastebin.com/z5ZkN3WH

功能的完整描述如下:

该参数是文件的全名。 打开由参数指定的文件,该文件的格式如数据文件部分所述,并从中读取所有数据。 字典的关键字应该是候选者的名称,与每个候选者相关的列表中的项目是他们发送的推文。 Tweet元组应采用以下格式(候选人,Tweet文本,日期,来源,收藏夹数,转发数)。 日期,收藏计数和转发计数应为整数,元组中的其余项目应为字符串。

到目前为止,我的代码如下:

def extract_data(metadata):
    """ list of str -> tuple of str/int

    Return extracted metadata in specified format.
    """
    date = int(metadata[1])
    source = metadata[3]
    favs = int(metadata[4])
    retweets = int(metadata[5])

    return date, source, favs, retweets

def read_tweets(file):
    """ (filename) -> dict of {str: list of tweet tuples}

    Read tweets from file and categorize into dictionary.

    >>> read_tweets('very_short_data.txt')
    {'Donald Trump': [('Donald Trump', 'Join me live in Springfield, Ohio!\\nhttps://t (dot) co/LREA7WRmOx\\n', 1477604720, 'Twitter for iPhone', 5251, 1895)]}
    """

    result = {}
    with open(file) as data:
        tweets = data.read().split('<<<EOT')
        for i, tweet in enumerate(tweets):
            line = tweet.splitlines()
            content = ' '.join(line[2:])
            meta = line[1].split(',')
            if ':' in line[0]:
                author = line[0]
                metadata = extract_data(meta)
            else:
                metadata = extract_data(meta)

            candidate = author

            result[candidate] = [(candidate, content, metadata)]

        return result

当前,这将导致错误:“日期= int(元数据[1])IndexError:列表索引超出范围”。 我不确定为什么,或下一步该怎么做。 任何帮助,将不胜感激。

谢谢

考虑到空tweet的候选人没有EOT,我认为按EOT拆分不是一个好主意。 最好遍历内容而不是一次读取所有数据。 它使它变得容易得多。

做同样的任务也卡在这个函子上:(

暂无
暂无

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

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