根据从我们输入的标准打印.csv中的行

2024-10-05 11:04:41 发布

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

我是python新手,正在寻找有关我正在工作的任务的指导。在

我正在导入一个csv文件,它看起来像下面的列表。在

invoice_id,customer_first_name,customer_last_name,part_number,quantity,total

18031,Hank,Scorpio,367,1,2.63
54886,Max,Power,171,3,50.79
19714,Jonathan,Frink,179,2,7.93
19714,Jonathan,Frink,378,2,32.34
22268,Gil,Gunderson,165,2,47.15
87681,Lionel,Hutz,218,1,50.83
84508,Lurleen,Lumpkin,257,1,81.95
34018,Lionel,Hutz,112,3,88.88
34018,Lionel,Hutz,386,3,86.04
34018,Lionel,Hutz,216,1,53.54
66648,Patty,Bouvier,203,3,70.47

我只想打印每一行,如果它基于用户输入的条件。例如,如果用户输入lname,然后输入Hutz,则会打印出以下内容。在

^{pr2}$

这就是我目前所拥有的。。。在

salesdatafile= None
while True:
    salesdatafilename=input("Enter the name of the file:")
    try:
        salesdata= open(salesdatafilename, 'r')
        break
    except FileNotFoundError:
        print("{0} was not found".format ( salesdatafilename ))

search=input("Do you want to search by invoice id or lname? Please type id or lname: ")
idsearch=salesdata.readline() 

if search== 'id':
    idnumber=print(int(input('Please enter Id to search: ')))
    while idsearch != '':
        if idsearch== idnumber:
            print(idsearch)

else:
    lname=print(input('Please enter your last name: '))
    while idsearch != '':
        if idsearch== lname:
            print(idsearch)

所有打印出来的都是用户输入的lname或id。在


Tags: 用户nameidinputsearchifinvoiceprint
3条回答

为了提高性能,我将使用一个生成器来读取这些行,这样我的程序不会崩溃,如果这是一个更大的文件。所以我将用生成器函数生成文件中的每一行。因为生成器返回iteratirs,所以我将迭代并过滤不包含我的搜索值的每一行,只返回包含我的搜索值的行。在

在代码中,您将整行与idnumber或lname进行比较。相反,你可能想试试

if lname in idsearch:
    <do something>

这将检查lname是否在某个行中。在

Python内置了一个csv模块,您应该使用它。查看下面的示例代码:

import csv
salesdatafilename = r"path/to/file.txt"
data = csv.reader(open(salesdatafilename))
last_name_to_look_for = "Lionel"
for invoice_id, customer_first_name, customer_last_name, part_number, quantity, total in data:
     if customer_last_name == last_name_to_look_for:
        print(invoice_id, customer_first_name, customer_last_name, part_number, quantity, total)

相关问题 更多 >

    热门问题