如何以方便的格式从Tkinter浏览按钮中提取数据

时间:2016-07-08 19:39:46

标签: python tkinter

我在Python中使用Tkinter模块制作GUI。当使用“浏览”按钮打开时,我尝试以方便的格式从制表符分隔文件中获取数据。我现在有以下代码,它将我的数据保存在一个长字符串中(使用data.get()调用时),包括\t&{39}和\n' s。有没有一种方便的方法可以将我的数据立即放入pandas数据框,而不是过滤掉空行,找到标题,在\t分隔等等?

from Tkinter import *
import tkFileDialog

def browse_file():
    file = tkFileDialog.askopenfile()
    path.set(file.name)
    if file:
        data.set(file.read())

root = Tk()
path = StringVar()
data = StringVar()
Entry(root, textvariable=path, width=50).pack(side=LEFT)
Button(root, text="Browse", command=browse_file).pack(side=LEFT)
root.mainloop()

编辑:

样本数据

Average readings / Time between readings = 1 / 0.10

Rel Time    X1  Y1(Volts)

0.812   0.000000E+0 3.652836E-5
1.130   1.000000E-5 8.870999E-3
1.435   2.000000E-5 1.785118E-2

1 个答案:

答案 0 :(得分:0)

如果您的数据如下所示:

data = """
Average readings / Time between readings = 1 / 0.10

Rel_Time\tX1\tY1(Volts)

0.812\t0.000000E+0\t3.652836E-5
1.130\t1.000000E-5\t8.870999E-3
1.435\t2.000000E-5\t1.785118E-2
"""

然后你可以这样做:

import pandas as pd
import numpy as np
import numpy.ma as ma
import io

data = """
Average readings / Time between readings = 1 / 0.10

Rel_Time\tX1\tY1(Volts)

0.812\t0.000000E+0\t3.652836E-5
1.130\t1.000000E-5\t8.870999E-3
1.435\t2.000000E-5\t1.785118E-2
"""

df = pd.read_table(
        io.StringIO(data),
        header = 1,
        index_col = 0,
        dtype = np.float64
    )

print(df)

--output:--
               X1  Y1(Volts)
Rel_Time                    
0.812     0.00000   0.000037
1.130     0.00001   0.008871
1.435     0.00002   0.01785

如果这是您想要的那种,那么您需要弄清楚如何将您的实际数据转换为该格式。