计算度数、接近度、特征向量、Katz、PageRank 和介数中心性并接受来自文件的输入

问题描述 投票:0回答:1

我试图从 phyton 中读取文本文件,但它没有正确执行。

def read_city_data(file_path):
    cities = {}
    with open(file_path, 'r') as file:
        next(file)  # Skip header line
        for line in file:
            try:
                city, latitude, longitude = line.strip().split('\t')
                if ' ' in city:
                    city = '"{}"'.format(city)
                cities[city] = (float(latitude), float(longitude))
            except ValueError:
                print("skipped")
                # Skip over lines with invalid format
                continue
    return cities

这就是我尝试读取文本文件的方式,这是文本文件的格式:

City    Latitude    Longitude
Oradea    47.0465005    21.9189438
Zerind    46.622511    21.517419
Arad    46.166667    21.316667
Timisoara    45.759722    21.23
Lugoj    45.68861    21.90306
Mehadia    44.904114    22.364516
Drobeta    44.636923    22.659734
Craiova    44.333333    23.816667000000052
Sibiu    45.792784    24.152068999999983
Rimnicu Vilcea    45.099675    24.369318
Fagaras    45.8416403    24.9730954
Pitesti    44.860556    24.867778000000044
Giurgiu    43.9037076    25.9699265
Bucharest    44.439663    26.096306
Urziceni    44.7165317    26.641121
Eforie    44.058422    28.633607
Hirsova    44.6833333    27.9333333
Vaslui    46.640692    27.727647
Iasi    47.156944    27.590278000000012
Neamt    47.2    26.3666667

但是它不起作用,它只是不断跳过打印,表明这是一个异常。

我还尝试编写计算中心性的函数;城市图的度数、接近度、特征向量、介数、Katz 和 pagerank,但我在任何地方都找不到它们的实现,我只能从导入的 networkx 库访问它们。如果有人碰巧知道这样做,请分享。

python artificial-intelligence eigenvector pagerank
1个回答
0
投票

这可能是因为行中的单词可能没有用制表符分隔。我用 4 个空格替换了它,你的代码对我来说工作得很好,否则它会像你报告的那样显示“跳过”。请确保它们确实是制表符分隔的。要确认,请尝试:

city, latitude, longitude = line.strip().split('    ')
#4 个空格

© www.soinside.com 2019 - 2024. All rights reserved.