【问题标题】:Sorting and sequencing data from a file对文件中的数据进行排序和排序
【发布时间】:2018-05-08 13:13:14
【问题描述】:

我开发了一个存储 id 列表的程序,所以:

但出于预期目的,数据应采用顺序形式,以便第一对 id 类似于:“889926212541448192”变为 1,“889919950248448000”变为 2。也就是说,要成为的文件应该是喜欢:

其中第一个 id 与 2,3 和 6 连接,而 id 4 仅与 5 连接,形成一个网络。 我在这方面没有经验,但我找不到做这个阅读的方法。 我尝试做一些程序,但它们只读取行而不是列 id 到 id。该数据按照以下程序保存

import json

arq = open('ids.csv','w')
arq.write('Source'+','+'Target')
arq.write("\n")

lista_rede = [] #list to store all ids

with open('dados_twitter.json', 'r') as f:

    for line in f:
        lista = []

        tweet = json.loads(line) # to write as a Python dictionary
        lista = list(tweet.keys()) #write list of keys

        try:
            if 'retweeted_status' in lista:
                id_rt = json.dumps(tweet['retweeted_status']['id_str'])
                id_status = json.dumps(tweet['id_str'])

                lista_rede.append(tweet['id_str'])
                lista_rede.append(tweet['retweeted_status']['id_str'])

                arq.write( id_status +','+ id_rt )
                arq.write("\n")

            if tweet['quoted_status'] in lista :
                id_rt = json.dumps(tweet['quoted_status']['id_str'])
                id_status = json.dumps(tweet['id_str'])

                lista_rede.append(tweet['id_str'])
                lista_rede.append(tweet['quoted_status']['id_str'])

                arq.write( id_status +','+ id_rt )
                arq.write("\n")
        except:
               continue
arq.close()

因此,我有一个文件,其中包含成对交互的 ids 数据。 然后如何在读取时重新排列这些数据,甚至如何编写它们?使用 Python 还是其他语言?

【问题讨论】:

    标签: python json python-3.x twitter tweepy


    【解决方案1】:

    下面的 sn-p 可以完成这项工作-

    import re
    
    header = ''
    id_dict = {}
    
    # read the ids
    with open('ids.csv') as fr:
        header = fr.readline()
        for line in fr:
            ids = [int(s) for s in re.findall(r'\d+', line)]
            try:
                id_dict[int(ids[0])].append(int(ids[1]))
            except:
                id_dict[int(ids[0])] = [int(ids[1])]
    
    # sort the ids
    for key in id_dict:
        id_dict[key].sort()
    
    # save the sorted ids in a new file
    with open('ids_sorted.txt', 'w') as fw:
        # fw.write(header)
        for key in sorted(id_dict):
            for value in id_dict[key]:
                fw.write("{0} {1}\n".format(key, value))
    

    【讨论】:

      猜你喜欢
      • 2019-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多