لا يمكن لـ Python تحويل السلسلة إلى تعويم في بعض الأحيان

0

لدي الكودين التاليين:

1.

f=open("file.csv","r")
data=f.read()
f.close()
for line in data.split("\n"):
    for d in line.split(","):
        print(float(d))

2.

f=open("file.csv","r")
data=f.read()
f.close()
for line in data.split("\n"):
    for d in line.split(","):
        float(d)

يعمل الكود الأول بشكل جيد ، لكن الثاني يعطي الخطأ:

قيمة الخطأ: تعذر تحويل السلسلة إلى تعويم:

ما هو الخطأ في الكود الثاني؟

هذا هو أول سطرين من الملف:

0،100،100،100،100،100،100،100،100،100،100،100،100،100،100،100،100،100،100،0
0،49.805،69.3666،78.4413،83.2828،86.1354،87.9128،89.0309،89.6942،90.0045،90.0045

1 إجابة

0

الحقل "الفارغ" الوحيد الخاص بك هو نهاية الملف بعد السطر النهائي الجديد. استخدمت الرمز التالي للتشخيص. ومع ذلك ، لم أتمكن من تمرير هذا الرمز بدون أخطاء ؛ حتى نسختك الأولى تطرح الاستثناء.

f=open("file.csv","r")
data=f.read()
f.close()
for line in data.split("\n"):
    for d in line.split(","):
        print('|' + d + '|')
        print(float(d))

    print("----------------------")

وينتج عنه

|0|
0.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|100|
100.0
|0|
0.0
----------------------
|0|
0.0
|49.805|
49.805
|69.3666|
69.3666
|78.4413|
78.4413
|83.2828|
83.2828
|86.1354|
86.1354
|87.9128|
87.9128
|89.0309|
89.0309
|89.6942|
89.6942
|90.0045|
90.0045
|90.0045|
90.0045
----------------------
||
Traceback (most recent call last):
  File "so.py", line 7, in <module>
    print(float(d))
ValueError: could not convert string to float: 

المحلول

استخدم ال with بيان والحصول على المدخلات سطر واحد في كل مرة:

with open("file.csv","r") as f:
    for line in f:
        for d in line.split(","):
            print(float(d))

أعتقد أن هذا يمنحك الوظائف المطلوبة.

:مؤلف

أسئلة ذات صلة

فوق
قائمة طعام