首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python csvreader分隔行

Python csvreader分隔行
EN

Stack Overflow用户
提问于 2012-01-21 11:59:11
回答 2查看 377关注 0票数 0

我正在为Python使用csv模块。我仔细地看了一下CSV文件读写指南。我想要编写一个循环,该循环贯穿CSV文件中的每一行,并为每一行分配一个不同的变量。有人对此有什么想法吗?

我知道有一个.next().line_num,虽然我可能错了,但我不认为这些在这种情况下是合适的。

目前,我有以下代码,它打印出整个CSV文件:

代码语言:javascript
复制
print_csv = csv.reader(open(csv_name, 'rb'), delimiter=' ', quotechar='|')
for row in print_csv:
    print ', '.join(row)

编辑

我现在从这个问题线程中了解到,实现这一点的最佳方法将取决于第一行将用于什么。

对于CSV文件的第一行,我要做的是检查它是否采用正确的格式。这将涉及:

  • 检查是否有预期的列数。
  • 检查列标题是否具有正确的名称。
  • 检查to列是否以正确的顺序排列。
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-21 12:10:34

1.-快速回答

与其设置不同的自变量,您还可以:

代码语言:javascript
复制
mydict = {}
for idx, item in enumerate(reader):
    mydict['var%i' %idx] = item

然后调用var如下:

代码语言:javascript
复制
mydict['var0']

或者在py3k中更短:

代码语言:javascript
复制
mydict = {'var%i' %idx : item for idx, item in enumerate(reader)}

,但这并没有多大意义,用这样的方式应用

正如一位评论者所说,这和直接做没有什么不同:

代码语言:javascript
复制
mylist = list(reader)

然后

代码语言:javascript
复制
mylist[0] # instead of 'var0'

这个选择要好得多。

当您从相同的读取器行提取字典键时,字典策略是最适合的。例如,如果它位于pos 0,则:

代码语言:javascript
复制
mydict = {item[0] : item for item in reader}

2.-正确的答案

但是,如果您只想检查第一行的格式(也许是为了计算打印所需的空间),那么方法可以是:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2012-01-21 12:02:13

很明显,你可以:

代码语言:javascript
复制
var1 = reader.next()
var2 = reader.next()
var3 = reader.next()
var4 = reader.next()
var5 = reader.next()

或其任何更改。这不是我最喜欢的编码风格,但它有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8952795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档