【问题标题】:Python statement to print specific row in .csv depending on week number根据周数在 .csv 中打印特定行的 Python 语句
【发布时间】:2015-10-19 03:52:57
【问题描述】:

我有一个包含 5 列数据的 .csv 文件。第 5 列是带编号的星期的日期。我想根据当前周数在桌面上的对象中打印其他 4 列数据。例如,第 01 周在第 1 列中有 1,在第 2 列中有 2,在第 3 列中有 3,在第 4 列中有 4。我想在对象中按 1、2、3、4 的顺序打印。一旦第 01 周结束,我希望它更改为第 02 周的数据。在第 1 列中,数据现在是 5,第 2 列现在是 6,依此类推。我一直在尝试找到一个可行的 if 语句,但没有我找到了作品。

我是 python 新手,有一些编码背景。我无法弄清楚正确的 if 语句还是有更好的功能可以使用?谢谢。

这是我目前的位置:

from datetime import date

import wx
app = wx.App()
frame = wx.Frame(None, -1, 'win.py')
frame.Show()
app.MainLoop()

import csv

import time
#----------------------------------------------------------------------
def csv_dict_reader(file_obj):
"""
Read a csv.DictReader
"""
    reader = csv.DictReader(file_obj, delimiter=',')
    for column in reader:
        if(column["Date"])==(time.strftime("%U")):
            print(column["Column 1"])
            print(column["Column 2"])
            print(column["Column 3"])
            print(column["Column 4"])


#----------------------------------------------------------------------
if __name__ == "__main__":
    with open("data.csv") as f_obj:
        csv_dict_reader(f_obj)

我的 .csv 样本是:

Column 1     Column 2    Column 3    Column 4    Date
  1            2           3           4           1
  5            6           7           8           2
  9            10          11          12          3

我想要的输出是: 如果第 1 周打印:

1
2
3
4

如果第 2 周打印:

5
6
7
8

我希望将它们打印在桌面上的一个盒子中。当一周发生变化时,我希望它自动更改为下一周的数据。

谢谢。

sdruch

【问题讨论】:

  • 欢迎来到 StackOverflow。请澄清您的问题,尤其是根据stackoverflow.com/help/mcve 的发布指南。除其他事项外,请显示输入文件中的示例数据和所需输出的示例。除此之外,您期望的结果令人困惑:“print”是将数据发送到输出通道的命令; “对象”是您设计的内部数据结构。此外,您声明要按降序打印,但您已经描述了升序。
  • 请您编辑您的问题(按edit 按钮)以添加您输入的小样本,以及您的预期输出应该是什么。
  • 我添加了一个样本和一个预期的输出。谢谢。
  • 那么触发事件是什么,您是否表示当时间日期提前时,您希望检查文件并从文件中提取并显示正确的值。这不是太难,但我认为你需要有两个功能,一个检查日期时间,两个读取文件并拉出正确的行并显示它。我想您需要保留当前的一周,当它发生变化时打开文件并找到适当的值
  • 我认为你需要把它分解成块,第一个块是如何判断一周已经改变。第二块是,考虑到一周的变化,我如何从 csv 文件中选择正确的值。我认为以这种方式构建的问题更容易看到 - 如果我对您的问题的解释是正确的

标签: python date csv if-statement


【解决方案1】:

经过大量更改和查看后,我得到了一些可以在下周使用的东西。我将不得不看看是否可以找到刷新脚本或其他东西。我正在发布我开始工作的最终代码。如果有人知道更简单的方法来完成这项工作,请告诉我。

import csv
import time
from Tkinter import *

root = Tk()
var0 = StringVar()
var1 = StringVar()
var2 = StringVar()
var3 = StringVar()

label0 = Label(root, textvariable=var0, relief=RAISED)
label1 = Label(root, textvariable=var1, relief=RAISED)
label2 = Label(root, textvariable=var2, relief=RAISED)
label3 = Label(root, textvariable=var3, relief=RAISED)

#----------------------------------------------------------------------
def csv_dict_reader(file_obj):

reader = csv.DictReader(file_obj, delimiter=',')
for column in reader:
 if(column["Week"])==(time.strftime("%U")):
  var0.set(column["Column1"])
  var1.set(column["Column2"])
  var2.set(column["Column3"])
  var3.set(column["Column4"])

#----------------------------------------------------------------------
if __name__ == "__main__":
    with open("Data.csv") as f_obj:
        csv_dict_reader(f_obj)

label0.pack()
label1.pack()
label2.pack()
label3.pack()
root.mainloop()

这可以为我提供我想要从 .csv 文件显示的数据。就像我说的那样,我需要看看是否有刷新或其他东西会在新的一周发生时自动改变。

谢谢

sdruch

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2017-03-14
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多