我有一个评估做的,这是我到目前为止的代码:从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