用智能窗体从python文件中读取数据

2024-06-28 19:01:08 发布

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

我有一个数据表:

enter image description here

Ciudad代表城市,Fase代表阶段,Tarea代表任务

数据表以以下格式保存到文件中:

Giron 20 15,18 40 50 60,77 37 45
Floridablanca 17 13,17 35 43 55,67 39 46
Bogota 15 12,17 35 43 55,67 39 46
Cali 14 12,10 30 40 32,59 67 33

这些数字意味着数百万(2000万、1800万等)

每个城市都是一条线。阶段用“,”分隔,任务用空格分隔

我需要从python中读取这个文件,并且能够处理每个城市的任务和阶段,计算一个城市中哪些任务更昂贵,哪些阶段最昂贵,等等

问题是我真的不知道如何读取和保存数据,以便开始计算我需要计算的内容

我一直在尝试使用1d数组和带有Numpy(loadtxt,genfromtxt)的2d数组,但是数据输出不是很清楚,我不知道如何使用它


Tags: 文件数据格式代表数字数组阶段cali
2条回答

这是一个简单的解析任务,但必须分阶段进行。首先解析一些,然后对每一位再解析一点,等等

试试这个:

#!python3
import io

File = """Giron 20 15,18 40 50 60,77 37 45
Floridablanca 17 13,17 35 43 55,67 39 46
Bogota 15 12,17 35 43 55,67 39 46
Cali 14 12,10 30 40 32,59 67 33
"""

Ciudades = {}

with io.StringIO(File) as infile:
    for line in infile:
        if line.strip():
            ciudad,costs = line.split(' ', 1)
            Ciudades[ciudad] = fases = {}
            for fase,tareacosts in enumerate(costs.split(',')):
                fn = "Fase {}".format(fase)
                fases[fn] = list(map(int, tareacosts.split(' ')))

print("Most expensive tarea in Bogota Fase 2 is:",
        max(Ciudades['Bogota']['Fase 2']))
import re
line = 'Santa Rosa de Cabal 20 15,18 40 50 60,77 37 45'
city, phase1, phase2, phase3 = re.match(
    '(.+) (\d+ \d+),(\d+ \d+ \d+ \d+),(\d+ \d+ \d+)', line).groups()

def tasks(phase_string):
    return [int(task) for task in phase_string.split()]

print(city)
for phase in phase1, phase2, phase3:
    print(tasks(phase))

输出:

Santa Rosa de Cabal
[20, 15]
[18, 40, 50, 60]
[77, 37, 45]

这里主要是正则表达式。了解他们。你知道吗

相关问题 更多 >