首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >根据线路内容拉出CSV的特定线路

根据线路内容拉出CSV的特定线路
EN

Stack Overflow用户
提问于 2013-10-25 20:04:08
回答 1查看 96关注 0票数 0

我下载每周CSV文件,我只需要几行特定的数据。所有相关行都以“发票”开头,这是我希望Python查找的标准。我只是不知道怎么让节目这么做。

我试过用这个:

代码语言:javascript
复制
import csv
with open("OpenInvList_9428.csv" , 'rb') as file:
    reader = csv.reader(file, delimiter = ',')
    for row in reader:
        if "Invoice" in row:
            print ','.join(row)

我知道这句话有些地方不对:

代码语言:javascript
复制
if "Invoice" in row:

我只是不确定是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-25 20:06:47

如果行以Invoice开头,那么行中的第一列必须以Invoice开头,对吗?所以:

代码语言:javascript
复制
with open("OpenInvList_9428.csv" , 'rb') as file:
    reader = csv.reader(file, delimiter = ',')
    for row in reader:
        if row[0].startswith('Invoice'):
            print ','.join(row)

if "Invoice" in row:,您尝试检查其中任何列是否确实是"Invoice"-that,如果该行以Invoice,开头,它将工作,但如果以Invoice 23,开头,则不会。这是因为row是一个字符串列表,而不是字符串,in对列表就是这样做的。

如果要检查任何列是否将Invoice作为子字符串,则如下所示:

代码语言:javascript
复制
if any('Invoice' in column for column in row):

或者,检查这些列是否以Invoice开头

代码语言:javascript
复制
if any(column.startswith('Invoice') for column in row):

但是,如果您要解析CSV的唯一原因是将它重新加入到另一个CSV中,那么为什么首先要这样做呢?如果CSV中没有引用,您可以做同样的事情,更简单地如下所示:

代码语言:javascript
复制
with open("OpenInvList_9428.csv" , 'rb') as file:
    for line in file:
        if line.startswith('Invoice'):
            print line

在那里,如果'Invoice' in line是任何列的子字符串(因为在这种情况下,它是行的子字符串),Invoice就会找到它。

如果有任何引用,您将生成无效的输出,而更简单的代码则会使其正确。

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

https://stackoverflow.com/questions/19598541

复制
相关文章

相似问题

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