簡體   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