我有一個評估做的,這是我到目前爲止的代碼:從csv中檢索數據,並將行x和列y的值分配給變量。 Py3.2,*功課*
number1 = input("Number1? ")
number2 = input("Number2? ")
packages = csv.reader(open('lol.txt', newline='\n'), delimiter=',')
for PackName,PriceAdultString,PriceChildString in packages:
n += 1
PriceAdult = float(PriceAdultString)
PriceChild = float(PriceChildString)
print("%i. %17s - $%4.2d/$%4.2d" % (n, PackName, PriceAdult, PriceChild))
NameChoice = input("Which name would you like? Choose using a number: ")
通過csv.reader使用的lol.txt由以下部分組成:
herp,123,456
derp,321,654
hurr,213,546
現在,我需要能夠使用NameChoice從文件中檢索一行,並使用名稱,number1和number2中的數據,因此對於NameChoice == 1,name = herp,number1 = 123和number 2 = 456,並且這些數字必須是浮點數。
我很難解決這個問題,如果可能的話可以使用一些指導。
謝謝大家。
在被問到之前,我意識到我忘了提及:我已經使用Google搜索並通過Python指南和我的教科書進行了瀏覽。不過,我並不完全相信我知道我在找什麼。
潤成一個新的問題: 我需要能夠採取CSV文本用「\ n \ n」而不是「\ n」,所以文字更像是以下幾點:
herp,123,456
derp,321,654
hurr,213,546
代碼立昂的我(非常輕微調整)版本使用:
import csv
with open ("lol.txt",'rt', newline = '\n\n') as f:
csv_r = csv.reader (f)
entries = [ (name, float(p1), float(p2)) for name, p1, p2 in csv_r]
for index, entry in enumerate(entries):
print ("%2i. %-10s %5.2f %5.2f" % (index, entry[0], entry[1], entry[2]))
choice = int(input("Choose a number: "))
print (entries[choice])
它返回例外:
Traceback (most recent call last):
File "C:/Python32/eh", line 2, in <module>
with open ("lol.txt",'rt', newline = '\n\n') as f:
ValueError: illegal newline value:
現在,調試非常清晰 - '\ n \ n'作爲換行符不可接受,但我想知道是否有解決方法?
注:搞砸了一個編輯,從代碼的調試與「換行=‘\ n’」將是:
Traceback (most recent call last):
File "C:/Python32/eh", line 4, in <module>
entries = [ (name, float(p1), float(p2)) for name, p1, p2 in csv_r]
File "C:/Python32/eh", line 4, in <listcomp>
entries = [ (name, float(p1), float(p2)) for name, p1, p2 in csv_r]
ValueError: need more than 0 values to unpack
這是因爲它與每一個介於0值處理的空白就像它被告知要做的那樣,一排排有用的排,而且那裏什麼也沒有。
謝謝大家, 我覺得我快到了,但是我不打算在這之前關閉這個問題,我已經實施了一切,並檢查了我的工作。 禁止一些擰緊,它應該在4或5小時內關閉(現在是晚上9點,我需要出去半個小時或更長的時間來清理我的頭)。 再次感謝。 當我有能力時,我會爲你投票。 – Epidemic