正在从CSV读取单元格,试图截断cod

2024-04-27 05:12:23 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我从一个CSV文件中读取两个单元格来比较它们

import csv

portfolio = csv.reader(open(r"c:\testing.csv", "rb"))
APP_TYPE = []

for app_data in portfolio:
    APP_TYPE.append(app_data[1])

portfolio1 = csv.reader(open(r"c:\testing.csv", "rb"))
APP_TYPE1 = []

for app_data1 in portfolio1:
    APP_TYPE1.append(app_data1[2])

if APP_TYPE1[1] == 'CLIENT' and APP_TYPE[1] == 'A1':
    print "yes"

我试过几次,因为我觉得这是一个可怕的方法,什么是更好的方法来削减脂肪,可以这么说?你知道吗


Tags: csvinappfordatatypeopentesting
2条回答

读取一次,将csv.reader()对象用作iterable,使用^{} function跳过第一行,然后再次使用next()读取第二行:

import csv

with open(r"c:\testing.csv", "rb") as infh:
    reader = csv.reader(infh)
    next(reader, None)   # skip first row
    row = next(reader)
    if row[1] == 'A1' and row[2] == 'CLIENT':
        print "yes"

one步骤中,它不再读取文件的前两行。with语句将open file对象用作上下文管理器,这意味着当读取操作完成时,它将自动关闭。你知道吗

您还可以使用^{}来切掉1行:

import csv
from itertools import islice

with open(r"c:\testing.csv", "rb") as infh:
    reader = csv.reader(infh)
    for row in islice(reader, 1, 2):  # skip first, only read second row
        if row[1] == 'A1' and row[2] == 'CLIENT':
            print "yes"

对于单次跳过+单次读取,我通常还是坚持next(),但是跳过多行islice()是非常宝贵的。你知道吗

改进:

  • 使用with(在块的末尾为您关闭文件)

  • 读一次

  • 只读取前两行


import csv

with open(r'c:\testing.csv', 'rb') as f:
    reader = csv.reader(f)
    next(reader) # skip first line
    row = next(reader)
    if row[1] == 'A1' and row[2] == 'CLIENT':
        print 'yes'

为了可读性,我让字符串引用保持一致。你知道吗

相关问题 更多 >