ValueError:无法将字符串转换为浮点值:“”python

2024-09-27 00:16:45 发布

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

我有这个档案

1
1
GALAXY S10
1000
MOVIL
1
1
2
2
IPHONE
1200
MOVIL
2
2
3
3
MAC
1400
ORDENADOR
2
3

我的代码:

listProducto1 = [1,"GALAXY S10", 1000, "MOVIL",1,1]
listProducto2 = [2,"IPHONE", 1200, "MOVIL",2,2]
listProducto3 = [3,"MAC", 1400, "ORDENADOR",2,3]

diccProductos = {1:listProducto1,2:listProducto2,3:listProducto3}
diccAuxiliar ={}

f=open(fichero,"w")
for clave in diccProductos.keys():
    f.write(str(clave)+"\n")
    for valor in diccProductos.keys():
        f.write(str(diccProductos[clave][valor-1])+"\n")
f.close()

f=open(fichero,"r")
lineas=f.read().split("\n")
contador=0

for linea in lineas:
    if (contador==0):
        varAux=str(linea)
        #varAux=linea
        #varKey = int(float(varAux))
        #varKey = int(varAux)
        print(contador,varAux)
        diccAuxiliar[varAux]=[]
    else:
        varValor=linea
        print("contador: ",contador," |valor :",varValor)
        diccAuxiliar[varAux].append(varValor)
    contador+=1

    if (contador==7):
        contador=0

print(diccAuxiliar["1"][3])

为了找到键,我必须使用string,我想使用整数,当我使用var=int(line)时,这是我的错误,我尝试使用float

我的想法是将一个包含列表的字典传递给一个文件,然后获取该文件并使其可视化,以便在不使用pickle、csv、json等的情况下继续使用该字典


Tags: inforgalaxyvalorintprintstrcontador
1条回答
网友
1楼 · 发布于 2024-09-27 00:16:45

如果只使用列表列表,代码会更干净。使用这种方法,您的第一个产品将从0开始,而不是从1开始,并且您将看到,每个产品在输出文件上都有6行,而不是您发布的代码中的7

下面是一个实现我使用Python 3.6+描述的概念的解决方案(因为f-strings):

from pathlib import Path

products = [
    [1, "GALAXY S10", 1000, "MOVIL", 1, 1],
    [2, "IPHONE", 1200, "MOVIL", 2, 2],
    [3, "MAC", 1400, "ORDENADOR", 2, 3]
]

filename = Path('outputfile.txt')
lines_per_product = len(products[0])

with filename.open('w') as f:
    for product in products:
        for value in product:
            f.write(f'{value}\n')

products_aux = []

with filename.open() as f:
    lines = [_.strip() for _ in f.readlines()]
    for i in range(0, len(lines), lines_per_product):
        products_aux.append([
            int(_) if _.isdigit() else _
            for _ in lines[i:i + lines_per_product]
        ])

print(products_aux[0][3])

相关问题 更多 >

    热门问题