在textbox python中以特定格式插入列表中的值

在textbox python中以特定格式插入列表中的值,python,list,collections,tkinter,counter,Python,List,Collections,Tkinter,Counter,我目前正在使用Python2.7以及Tkinter和collections。我已经让我的程序计算.txt文件中的单词,并将其保存到变量中。但是,当IresultsBox.insert(END,document\u data\u tall)时,它的显示方式类似于计数器({'Test':2,'World':1,'Hello':1}) 我正试图把它变成 Word : Value Word : Value Word : Value Word : Value Word : Value Word : Val

我目前正在使用Python2.7以及Tkinter和collections。我已经让我的程序计算
.txt
文件中的单词,并将其保存到变量中。但是,当I
resultsBox.insert(END,document\u data\u tall)
时,它的显示方式类似于
计数器({'Test':2,'World':1,'Hello':1})

我正试图把它变成

Word : Value Word : Value
Word : Value Word : Value
Word : Value Word : Value
我想让它这样做10行,然后开始下一个专栏

import os
from Tkinter import *
from collections import Counter
import tkFileDialog

root = Tk()

root.title("Doc Word Frequency")
root.geometry("600x300")

def close_window (): 
    root.destroy()

def browse_directory():
    global filename
    filename = tkFileDialog.askopenfilename(parent=root,title='Choose a file')

    inputBox.delete(0, "end")
    inputBox.insert(0, filename)

def read_document():
    with open (os.path.basename(filename), "r") as myfile:
        document_data = myfile.read().replace('\n', '')

    document_data_list = re.sub("[^\w]", " ",  document_data).split()

    document_data_Tally = Counter(document_data_list)

    print(document_data_list)

    resultsBox.configure(state=NORMAL)
    resultsBox.insert(END, document_data_Tally )
    resultsBox.configure(state=DISABLED)

inputBox = Entry(root, width = 50)
inputBox.grid(row = 0, column = 0, padx = 20, pady = 20)
inputBox.insert(0, 'Upload Document')

Button(root, width = 9, text = 'Browse', command = browse_directory).grid(row = 0, column = 1, sticky = W, padx = 4)
Button(root, width = 9, text = 'Read', command = read_document).grid(row = 0, column = 2, sticky = W, padx = 4)
Button(root, width = 9, text = 'Quit', command = close_window).grid(row = 0, column = 3, sticky = W, padx = 4)

resultsBox = Text(root, width = 60, height = 10)
resultsBox.grid(columnspan = 4, padx = 10, pady = 10)
resultsBox.config(state=DISABLED)

mainloop( )

另外,我对Python非常陌生,任何建设性的批评都将不胜感激。

您需要从计数器对象中提取数据,然后再将其放入文本中:

data = '\n'.join('{}\t{}'.format(k, v) for k, v in document_data_Tally.iteritems())

resultsBox.configure(state=NORMAL)
resultsBox.insert(END, data)
resultsBox.configure(state=DISABLED)
这将构建一个列表,用一个标签将单词及其计数分隔开来,因此您应该在
结果框中看到类似于下面的内容:

Test    2 
World   1 
Hello   1
Counter()调用的结果返回一个计数器对象。当您将它添加到框中时,它正在对它执行一个_repr__;()调用,这就是您所看到的。相反,您需要解析计数器对象并格式化您自己的字符串。将计数器对象当作一个dict来循环遍历单词。