使用python 3.在下面的代码中,不会打印第二个循环,不确定为什么。
忽略我要执行的操作,主要要点是在第一个循环之后无法访问该文件...
有什么想法吗?谢谢!
Import csv
f = open('table.csv')
csv_f = csv.reader(f)
# Convert data entries to integers
for row in csv_f:
if row[0]!="A": row[1:len(row)]=list(map(int,row[1:len(row)]))
print(row)
# Print table again
for row in csv_f:
print(row)
答案 0 :(得分:2)
您要做什么是从const string = 'productCat:Wine:country:Australia:year:2000:type:white wine';
const findNext = (data, str) => {
const array = data.split(':');
const i = array.indexOf(str);
if(i >= 0) return array[i+1];
}
console.log(findNext(string, 'productCat'));
console.log(findNext(string, 'country'));
访问数据,它是迭代器-意味着它只能完全传递一次,而您必须再次生成它。
您可以将其列出:
const string = 'productCat:Wine:country:Australia:year:2000:type:white wine';
const parseString = str => {
const array = str.split(':');
const result = {};
for(let i = 0; i<array.length; i=i+2) {
result[array[i]] = array[i+1];
}
return result;
}
const result = parseString(string);
console.log(result);
console.log(result.country);
console.log(result.year);
或在第二个循环之前再次加载文件。
同时,我建议稍微更改您的代码:
csv_f
这样,文件就不会在csv_f = list(csv.reader(f))
语句之外保持打开状态-比使用简单的with open('table.csv') as f:
csv_f = list(csv.reader(f))
# Convert data entries to integers
for row in csv_f:
if row[0]!="A": row[1:len(row)]=list(map(int,row[1:len(row)]))
print(row)
# Print table again
for row in csv_f:
print(row)