【问题标题】:Errors with obtaining and reading data from a file从文件获取和读取数据时出错
【发布时间】:2014-05-08 16:02:53
【问题描述】:

我正在尝试创建一个程序,该程序从.csv 文件中读取有关电影时间的信息,用户可以在其中按放映月份、电影制作公司和电影名称搜索电影时间.

文件格式如下:

Movie name, date , cinema, post code of cinema, company producing, cost

每一行。

我需要搜索的唯一信息是日期、制作公司和电影名称。

这段代码的第一个问题是,当我搜索一家公司的电影时,只显示文件中该公司的第一部电影,我想全部显示。

我遇到的第二个问题是我需要按月搜索电影,但文件中日期的格式是dd/mm/yy,我不确定如何只搜索月份而忽略日期和年份。

如果有人有解决这些问题的方法,我将非常感谢并提前致谢。

【问题讨论】:

  • 您可以粘贴部分输入文件作为示例吗?
  • 第一个是冰雪奇缘,03/04/2014,IMAX,LN3 6SD,Disney,£5.49
  • 这一行看起来不错,但要注意其他行中的多余空格。如果你看到了一些,你可以在你的代码中使用strip 方法来处理它们。

标签: python file search csv


【解决方案1】:

对于您的第一个问题,您的代码似乎是正确的,我已经对其进行了测试,它确实打印了一个与公司匹配的列表:

>>> company = "one"
>>> moviedata = [("one","two"), ("two","one"), ("two","three")]
>>> print([s for s in moviedata if (company) in s])
[('one', 'two'), ('two', 'one')]

我只能建议打印出来并检查您的电影数据是否存储在元组列表中。

对于第二个问题,只需对您必须检索月份的数据进行切片:

>>> "03/04/2014"[3:5]
'04'

您的代码示例:

>>> moviedata = [("one","two"), ("two","one"), ("two","three")]
>>> moviedata[1]
('two', 'one')
>>> moviedata[1][1]
'one'
>>> moviedata[1][1][:2]
'on'

【讨论】:

  • 我现在通过打印得到不止一个结果,虽然我以前没有。我不确定它是如何工作的,但感谢您帮助 e 解决这个问题。
  • 对于您的第二个问题,只需将日期切片以获取月份,在我的评论中编辑代码部分。
  • 我已经尝试过了,但问题是每一行都作为一个元素被读取,所以 moviedata[0:3] 返回文件的前三行。
  • 你需要获取元素然后切片,如果月份是第一个数字,尝试moviedata[2][3:5]或moviedata[2][0:3](borken美国格式^ ^) 编辑了一个例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-20
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多