【问题标题】:output data not printing quite as planned输出数据未按计划打印
【发布时间】:2016-02-21 23:19:54
【问题描述】:

我有一段代码接受输入的数字,搜索 CSV 并输出该行,但是原始输入的数字也会被打印出来。我需要在我的代码中修改什么来删除它?

    def DoASearch():
        self.outputQty.delete(1.0, 'end')
        self.outputDesc.delete(1.0, 'end')
        self.dwgoutputbox.configure(state="normal")
        self.dwgoutputbox.delete(1.0, 'end')
        self.dwgoutputbox.configure(state="disabled")
        try:
            print(int(sonumber.get()))
        except ValueError:
            messagebox.showwarning("OPPS !!", "Please enter a valid Shop Order number.")

        with open("lesspreadsheettest.csv") as csvfile:
            reader = csv.DictReader(csvfile)
            for row in reader:
                result=(row['Shop Order'])
                if sonumber.get() == result:
                    print(row['Part Number'])
                    print(row['Description'])
                    print(row['Quantity'])
                    print(row['Drawings'])
                    print(row['Issue'])

    self.searchbutton = ttk.Button(rootWindow, text="Search", command=DoASearch)
    self.searchbutton.grid(row=1, column=7, sticky=W, padx=3, pady=3)

修改并与以下代码很好地配合使用。添加了一些额外的重复字段,可以忽略。

def checkcsv():
        with open("lesspreadsheettest.csv") as csvfile:
            reader = csv.DictReader(csvfile)
            for row in reader:
                result=(row['Shop Order'])
                if sonumber.get() == result:
                    descQty=(row['Quantity'])
                    descInfo=(row['Description'])
                    descPN=(row['Part Number'])
                    descDwg1=(row['Drawings1'])
                    descIss1=(row['Issue1'])
                    descDwg2=(row['Drawings2'])
                    descIss2=(row['Issue2'])
                    descDwg3=(row['Drawings3'])
                    descIss3=(row['Issue3'])
                    self.outputQty.insert(INSERT,descQty)
                    self.outputDesc.insert(INSERT,descPN, END," ", END, descInfo)
                    self.dwgoutputbox.insert(INSERT, descDwg1, END, "   ", END, " Issue:  ",END,descIss1,END, "\n")
                    self.dwgoutputbox.insert(INSERT, descDwg2, END, "   ", END, " Issue:  ",END,descIss2,END, "\n")
                    self.dwgoutputbox.insert(INSERT, descDwg3, END, "   ", END, " Issue:  ",END,descIss3,END, "\n")
                    self.outputQty.configure(state="disabled")          
                    self.outputDesc.configure(state="disabled")
                    self.dwgoutputbox.configure(state="disabled")

使用循环的稍微好一点的版本如下:

def checkcsv():
        with open("lesspreadsheettest.csv") as csvfile:
            reader = csv.DictReader(csvfile)
            for row in reader:
                result=(row['Shop Order'])
                if sonumber.get() == result:
                    descQty=(row['Quantity'])
                    descInfo=(row['Description'])
                    descPN=(row['Part Number'])
                    for i in range(1,4):
                        descDwg=(row['Drawings'+ str(i)])
                        descIss=(row['Issue'+ str(i)])
                        self.dwgoutputbox.insert(1.0, descDwg, "dwg", "  Issue: ", "", descIss, "", "\n")
                    self.outputQty.insert(1.0, descQty)
                    self.outputDesc.insert(1.0, descPN, "", ": ", "", descInfo)
                    self.outputQty.configure(state="disabled")          
                    self.outputDesc.configure(state="disabled")
                    self.dwgoutputbox.configure(state="disabled")

【问题讨论】:

    标签: csv python-3.x tkinter stdout


    【解决方案1】:

    我建议更改以下行

    print(int(sonumber.get()))
    

    进入

    int(sonumber.get())
    

    但是,您真的应该更深入地查看您的代码,以便了解它做了哪些 操作以及它在哪里完成了这些操作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 2015-11-15
      • 2023-03-11
      相关资源
      最近更新 更多