我想阅读几行CSV文件。我打开一个列表并将一行追加到列表中。然后我尝试打印列表。但清单是空的。 CSV文件如下所示:
`hallo;das;ist;ein;test;der;hoffentlich;funktioniert;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert1;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert2;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert3;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert4;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert5;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert6;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert7;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert8;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert9;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert10;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert11;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert12;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert13;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert14;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert15;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert16;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert17;fingerscrossed;
`
这是我的代码:
import csv
spamreader = csv.reader(open('test.csv'), delimiter = ';')
verbraeuche_ab_reset = []
def berechne_gemittelten_verbrauch():
anzahl_zeilen = sum(1 for row in spamreader)
for row in spamreader:
if spamreader.line_num > 9 and spamreader.line_num < anzahl_zeilen:
verbrauch_ab_reset = row[7]
verbraeuche_ab_reset.append(verbrauch_ab_reset)
print(verbraeuche_ab_reset)
print(anzahl_zeilen)
berechne_gemittelten_verbrauch()
提前谢谢!
答案 0 :(得分:0)
以下作品。
提醒,迭代行anzahl_zeilen ...
中的数据会使您无法再次对数据进行迭代。
if spamreader.line_num > 9 and spamreader.line_num < anzahl_zeilen:
既没有真正检查行中的列,也没有检查到最后。迭代器为你做后者。要更改列,请改用len(row)
。
import csv
spamreader = csv.reader(open('test.csv'), delimiter = ';')
def berechne_gemittelten_verbrauch():
#anzahl_zeilen = sum(1 for row in spamreader) # kills your data / iterator is at the end
verbraeuche_ab_reset = []
for row in spamreader:
if len(row) > 9:
verbrauch_ab_reset = row[7]
verbraeuche_ab_reset.append(verbrauch_ab_reset)
return verbraeuche_ab_reset
verb = berechne_gemittelten_verbrauch()
# subsets
print(verb[9:11])
a[start:end] # items start through end-1
a[start:] # items start through the rest of the array
a[:end] # items from the beginning through end-1
a[:] # a copy of the whole array
答案 1 :(得分:0)
您的代码存在的问题是您正在迭代垃圾邮件阅读器两次。你只能这样做一次。
这句话将得出正确答案。
anzahl_zeilen = sum(1 for row in spamreader)
但是当你现在迭代同一个垃圾邮件阅读器时,你会得到一个空列表,因为你已经迭代过一次文件
for row in spamreader:
if spamreader.line_num > 9 and spamreader.line_num < anzahl_zeilen:
verbrauch_ab_reset = row[7]
verbraeuche_ab_reset.append(verbrauch_ab_reset)
解决这个问题,
spamreader = csv.reader(open('test.csv'), delimiter = ';')
anzahl_zeilen = sum(1 for row in spamreader)
spamreader = csv.reader(open('test.csv'), delimiter = ';')
for row in spamreader:
if spamreader.line_num > 9 and spamreader.line_num < anzahl_zeilen:
verbrauch_ab_reset = row[7]
verbraeuche_ab_reset.append(verbrauch_ab_reset)
答案 2 :(得分:0)
# try this code its very simple
input:
filename :samp1.csv
c1;c2;c3;c4;c5;c6;c7;c8;c9;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert1;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert2;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert3;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert4;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert5;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert6;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert7;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert8;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert9;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert10;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert11;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert12;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert13;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert14;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert15;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert16;fingerscrossed;
hallo;das;ist;ein;test;der;hoffentlich;funktioniert17;fingerscrossed;
#read the file
import pandas as pd
data = pd.read_csv('samp1.csv',sep=';')
df = pd.DataFrame({'c1':data.c1,'c2':data.c2,'c3':data.c3,'c4':data.c4,'c5':data.c5,'c6':data.c6,'c7':data.c7,'c8':data.c8,'c9':data.c9,})
#suppose we want to print first 6 lines
lines = df.ix[:5,['c1','c2','c3','c4','c5','c6','c7','c8','c9']]
print(lines)
output:
c1 c2 c3 c4 c5 c6 c7 c8 c9
0 hallo das ist ein test der hoffentlich funktioniert fingerscrossed
1 hallo das ist ein test der hoffentlich funktioniert1 fingerscrossed
2 hallo das ist ein test der hoffentlich funktioniert2 fingerscrossed
3 hallo das ist ein test der hoffentlich funktioniert3 fingerscrossed
4 hallo das ist ein test der hoffentlich funktioniert4 fingerscrossed
5 hallo das ist ein test der hoffentlich funktioniert5 fingerscrossed