我正在为Python使用csv模块。我仔细地看了一下CSV文件读写指南。我想要编写一个循环,该循环贯穿CSV文件中的每一行,并为每一行分配一个不同的变量。有人对此有什么想法吗?
我知道有一个.next()和.line_num,虽然我可能错了,但我不认为这些在这种情况下是合适的。
目前,我有以下代码,它打印出整个CSV文件:
print_csv = csv.reader(open(csv_name, 'rb'), delimiter=' ', quotechar='|')
for row in print_csv:
print ', '.join(row)编辑
我现在从这个问题线程中了解到,实现这一点的最佳方法将取决于第一行将用于什么。
对于CSV文件的第一行,我要做的是检查它是否采用正确的格式。这将涉及:
发布于 2012-01-21 12:10:34
1.-快速回答
与其设置不同的自变量,您还可以:
mydict = {}
for idx, item in enumerate(reader):
mydict['var%i' %idx] = item然后调用var如下:
mydict['var0']或者在py3k中更短:
mydict = {'var%i' %idx : item for idx, item in enumerate(reader)},但这并没有多大意义,用这样的方式应用
正如一位评论者所说,这和直接做没有什么不同:
mylist = list(reader)然后
mylist[0] # instead of 'var0'这个选择要好得多。
当您从相同的读取器行提取字典键时,字典策略是最适合的。例如,如果它位于pos 0,则:
mydict = {item[0] : item for item in reader}2.-正确的答案
但是,如果您只想检查第一行的格式(也许是为了计算打印所需的空间),那么方法可以是:
line = reader.next()
like_this = check_how_is_my(line)
if like_this == 'something_long':
spaces = 23
else:
spaces = 0
while True:
try:
print_with_spaces(line, spaces)
reader.next()
except StopIteration:
break发布于 2012-01-21 12:02:13
很明显,你可以:
var1 = reader.next()
var2 = reader.next()
var3 = reader.next()
var4 = reader.next()
var5 = reader.next()或其任何更改。这不是我最喜欢的编码风格,但它有效。
https://stackoverflow.com/questions/8952795
复制相似问题