【问题标题】:How to print from a csv file based on DOB如何从基于 DOB 的 csv 文件打印
【发布时间】:2014-04-27 13:55:59
【问题描述】:

我正在尝试创建一个程序,该程序将扫描 csv 文件(下面的示例)以查找出生日期,并使用出生日期中的月份来打印包含用户输入的出生月份的行。

到目前为止,这是我构建代码的方式:

import csv
dob = int(input('Input dob: '))
month = dob.split('/')
with open('AddressBook.csv', newline='') as myfile:
    reader = csv.reader(myfile)
    for row in reader:
        if month[1] in row:
            print(row)
        else:
            ()

每当我测试时,它都会说:

ValueError: invalid literal for int() with base 10: '11/02/65'

我想知道如何解决这个问题。

任何关于如何让程序运行的帮助将不胜感激。

【问题讨论】:

  • 我希望你的照片不会泄露真实人物的真实个人信息。
  • 不,这不是真人

标签: python csv addressbook date


【解决方案1】:

您不能对非数字字符串执行int()。取出int()。如果您需要数值为数字,int(month[1]) 应该可以。

(如果用户传入的字符串与您的预期输入不匹配,您的代码应该可以处理。如果它们之间不完全是两个带有合适数字的斜线,则可能会循环返回。可能有些用户会尝试写 1989- 05-13 或 1989 年 5 月 13 日,特别是因为程序没有显示如何格式化输入日期。)

【讨论】:

  • 好的,“错误”消失了!谢谢你,但由于某种原因,当我输入 dob 时,虽然它接受它为有效,但它不打印任何东西。你能解释一下为什么吗?
  • 这是我当前的代码(如果有帮助的话): import csv dob = input('Input dob (DD/MM/YYYY): ') month = dob.split('/') with open ('AddressBook.csv', newline='') as myfile: reader = csv.reader(myfile) for row in reader: if int(month[1]) in row: print(row) else: ()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 2021-11-06
  • 1970-01-01
  • 2012-07-04
  • 2021-02-28
  • 2015-10-13
  • 1970-01-01
相关资源
最近更新 更多