我在这个网站上进行了搜索。在线访问了不同的站点,并得到了同行的帮助。
...
python
def readData():
weatherlist = []
file = open("KMDW.csv","r")
sheet = file.readline()
for x in file:
innerlist = []
x = x.split(",")
for y in file:
innerlist.append(y)
weatherlist.append(innerlist)
print(x)
return x
readData()
...
我希望函数读取所有数据行。但是,返回列表后,我只会显示一行数据。
答案 0 :(得分:0)
这可行吗?
def readData():
weatherlist = []
file = open("KMDW.csv","r")
sheet = file.readlines()
for x in sheet:
innerlist = []
x = x.split(",")
for y in x:
innerlist.append(y)
weatherlist.append(innerlist)
print(weatherlist)
return weatherlist
readData()
答案 1 :(得分:0)
file.readline()
一次只能读取一行。将其替换为file.readlines()
以读取文件中的所有行。
答案 2 :(得分:0)
欢迎堆栈溢出!
我猜您打算将第一行作为标题行单独读取。然后,您想使用file.readlines()
处理其余的行。 readlines()
将在行末添加EOL字符,因此您应在每行上执行strip()
,以免最后一个元素中没有CR。您的内部循环似乎并没有为您做任何事情,并且在第一次迭代中第二次遍历一个对象也就毫无意义。鉴于此,并且您可能想返回正在建立的weatherlist
列表,这是我认为您想要的:
def readData():
weatherlist = []
file = open("KMDW.csv","r")
sheet = file.readline()
for x in file.readlines():
x = x.strip().split(",")
weatherlist.append(x)
return weatherlist
weatherlist = readData()
print(weatherlist)
如果文件的第一行与其他所有行一样都是数据行,则只需取出sheet = file.readline()
行即可。
将来,我建议您发布数据,因为很难知道没有数据就想做什么。通常只包含前3-4行就足够了。
答案 3 :(得分:0)
这里的问题是file
是generator。这意味着您在阅读文件时会耗尽文件的内容。
也就是说,您不能在变量文件上循环两次,而必须再次打开它。
当您像下面那样循环时,将耗尽整个文件生成器。因此,在for x in file
的第二次迭代中,没有任何要迭代的结果,因此只能读取一行。
for y in file:
innerlist.append(y)
答案 4 :(得分:0)
在readData
函数中,您返回x,在循环结束时它将具有最后一行的值。理想情况下,您应该使用return weatherList
返回所有行。
def readData():
weatherlist = []
file = open("KMDW.csv","r")
sheet = file.readline()
for x in file:
innerlist = []
x = x.split(",")
for y in file:
innerlist.append(y)
weatherlist.append(innerlist)
print(x)
return weatherList
readData()