对来自fi的数据进行排序和排序

2024-06-17 15:08:08 发布

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

我开发了一个存储ID列表的程序,因此:

enter image description here

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

enter image description here

其中,第一个id与2、3和6连接,而id 4仅与5连接,形成网络。 我在这方面没有经验,但我找不到一种方法来阅读。 我尝试执行一些程序,但它们只读取行id,而不读取列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还是其他语言


Tags: 数据程序idjsonidsstatustweetwrite
1条回答
网友
1楼 · 发布于 2024-06-17 15:08:08

以下代码段将完成此工作-

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))

相关问题 更多 >