我的代码如下:
file = open('traintag1.csv', 'r')
csv_reader = csv.reader(file)
data = [x[-1] for x in csv_reader]
print len(data)
target = [x[-2] for x in csv_reader]
print len(target)
,结果为len(data)=430
,但len(target)=0
应该是430
,len(data)
与7765,1256,http://hshihwih.com,0
12453,18978,http://shjhjkshd.com,1
相同。为什么长度不同?
另外,有没有办法按列读取csvfile?
该文件包含以下数据:
<script>
import { swiper, swiperSlide } from 'vue-awesome-swiper';
export default {
components: {
swiper,
swiperSlide,
},
data() {
return {
swiperOption: {
autoplay: false,
spaceBetween: 20,
pagination: '.swiper-pagination',
paginationClickable: true,
},
};
},
};
</script>
答案 0 :(得分:2)
您可以尝试以下内容:
file = open('traintag1.csv','r')
csv_reader = csv.reader(file)
data, target = zip(*[(x[-1], x[-2]) for x in csv_reader])
print len(data)
print len(target)
此代码创建元组列表,然后使用zip将对扩展为独立列表。
答案 1 :(得分:1)
csv_reader
迭代一次对象。如果你一次迭代它就不能再次迭代它,所以你不会得到第二次循环的任何值。
请尝试这个简单的代码,
import csv
file = open('traintag1.csv','r')
csv_reader = csv.reader(file)
target = []
data = []
for x in csv_reader:
data.append(x[-1])
target.append(x[-2])
print len(data)
print len(target)
在此代码中,target
和data
的值均来自单个循环。
如有任何疑问,请与我们联系。
答案 2 :(得分:1)
问题:
由于app.post('/', function(req, res, next) {
passport.authenticate('local', function(err, user, info) {
if (err) { return next(err); }
if (!user) { return res.redirect('/'); }
req.logIn(user, function(err) {
if (err) { return next(err); }
return res.redirect('/home.html);
});
})(req, res, next);
});
为ITERATOR,你正面临这个问题(请谷歌这个概念:))。
Iterator是具有“csv_reader
”方法的对象。执行next
时,它会创建csv_reader = csv.reader(file)
作为迭代器。 csv_reader
当时会给你一行。但是当线路结束时,再也无法重新启动它。
请查看以下内容:
csv_reader.next()
在您的代码中,当完成C:\Users\dinesh\Desktop>python
Python 2.7.13 (v2.7.13:a06454b1afa1, Dec 17 2016, 20:53:40) [MSC v.1500 64 bit (
AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import csv
>>> file = open('a.csv','r')
>>> csv_reader = csv.reader(file)
>>>
>>> dir(csv_reader)
['__class__', '__delattr__', '__doc__', '__format__', '__getattribute__', '__has
h__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr_
_', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'dialect', 'line
_num', 'next']
>>>
>>> csv_reader.next()
['7765', '1256', 'http://hshihwih.com', '0']
>>>
>>> csv_reader.next()
['12453', '18978', 'http://shjhjkshd.com', '1']
>>>
>>> csv_reader.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
的第一次迭代时,由于我上面解释的原因,它再次无法返回data
。
解决方案:
如下所示在一个循环中收集数据:
target