You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何将含边信息的TXT文件转换为指定格式的EdgeList?

解决边列表格式转换的问题

嘿,你的问题出在csv.reader的默认分隔符上!默认情况下,csv.reader会把逗号作为字段分隔符,但你的文本文件里是用制表符(\t)来分隔数字的,所以每一行的两个数字被当成了一个完整的字符串,才会得到像('0\t61',)这样的单元素元组。

这里有两种简单的修正方案:

方案一:指定csv.reader的分隔符

直接在初始化csv.reader时,指定delimiter='\t',同时把字符串转换成整数,这样就能得到你想要的格式:

import csv

with open("path_to_file.txt", 'r') as data:
    # 指定制表符为分隔符
    reader = csv.reader(data, delimiter='\t')
    # 将每一行的字符串转成整数,再打包成元组
    elist = [tuple(map(int, row)) for row in reader]

print(f"elist = {elist}")

方案二:不用csv模块,直接按行分割

如果你的文件里是用空格(或混合空格/制表符)分隔的,用split()方法会更灵活,不需要依赖csv模块:

elist = []

with open("path_to_file.txt", 'r') as f:
    for line in f:
        # 去掉首尾空白,按任意空白字符分割(支持空格、制表符等)
        parts = line.strip().split()
        # 每两个元素组成一个边的元组
        for i in range(0, len(parts), 2):
            if i + 1 < len(parts):
                elist.append( (int(parts[i]), int(parts[i+1])) )

print(f"elist = {elist}")

运行任意一种方案,你都能得到目标格式:

elist = [(0,61), (0,33344), (0,33412), (0,36114), (0,37320), (0,37769), (0,37924)]

内容的提问来源于stack exchange,提问作者Pazu

火山引擎 最新活动