我打开一个文件并阅读它csv.DictReader.我迭代了两次,但第二次没有打印.为什么这样,我怎样才能使它工作?
with open('MySpreadsheet.csv', 'rU') as wb:
reader = csv.DictReader(wb, dialect=csv.excel)
for row in reader:
print row
for row in reader:
print 'XXXXX'
# XXXXX is not printed
Run Code Online (Sandbox Code Playgroud)
dav*_*ism 10
您在第一次迭代时读取整个文件,因此第二次没有任何内容可供阅读.由于您似乎第二次没有使用csv数据,因此计算行数并在第二次迭代该范围会更简单.
import csv
from itertools import count
with open('MySpreadsheet.csv', 'rU') as f:
reader = csv.DictReader(f, dialect=csv.excel)
row_count = count(1)
for row in reader:
next(count)
print(row)
for i in range(row_count):
print('Stack Overflow')
Run Code Online (Sandbox Code Playgroud)
如果您需要再次遍历原始csv数据,则再次打开文件很简单.最有可能的是,您应该迭代第一次存储的某些数据,而不是再次读取文件.
with open('MySpreadsheet.csv', 'rU') as f:
reader = csv.DictReader(f, dialect=csv.excel)
for row in reader:
print(row)
with open('MySpreadsheet.csv', 'rU') as f:
reader = csv.DictReader(f, dialect=csv.excel)
for row in reader:
print('Stack Overflow')
Run Code Online (Sandbox Code Playgroud)
如果您不想再次打开文件,可以查找开头,跳过标题,然后再次迭代.
with open('MySpreadsheet.csv', 'rU') as f:
reader = csv.DictReader(f, dialect=csv.excel)
for row in reader:
print(row)
f.seek(0)
next(reader)
for row in reader:
print('Stack Overflow')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3197 次 |
| 最近记录: |