【发布时间】:2014-03-25 04:42:26
【问题描述】:
我正在处理从文本文件中获得的数据,这些数据必须随后进行分析。我目前正在使用 Excel 来完成这项任务。原始文件如下所示:
Contact Angle (deg) 86.20
Wetting Tension (dy/cm) 4.836
Wetting Tension Left (dy/cm) 39.44
Wetting Tension Right (dy/cm) 39.44
Base Tilt Angle (deg) 0.00
Base (mm) 1.6858
Base Area (mm2) 2.2322
Height (mm) 0.7888
Tip Width (mm) 0.9707
Wetted Tip Width (mm) 0.9581
Sessile Volume (ul) 1.1374
Sessile Surface Area (mm2) 4.1869
Contrast (cts) 245
Sharpness (cts) 161
Black Peak (cts) 10
White Peak (cts) 255
Edge Threshold (cts) 111
Base Left X (mm) 4.138
Base Right X (mm) 5.821
Base Y (mm) 2.980
RMS Fit Error (mm) 3.545E-3
@1600
我不需要这些信息的大部分,现在,我只需要顶部的接触角和时间(以底部的“@”为前缀)。目前,我有一个脚本可以提取我需要的信息并创建另一个文本文件以便于阅读。使用的代码如下:
infile = "in.txt"
outfile = "newout.out"
measure_time = ""
with open(infile) as f, open(outfile, 'w') as f2:
for line in f:
if line.split():
if line.split()[0] == "Contact":
contact_angle = line.split()[-1].strip()
f2.write("Contact Angle (deg): " + contact_angle + '\n')
if line.split()[0][0] == '@':
for i in range(1,5):
measure_time += (line.split()[0][i])
f2.write("Measured at: " + measure_time[:2] + ":" + measure_time[2:] + '\n')
measure_time = ""
else:
continue
我正在寻找一种方法,可以在电子表格中很好地格式化我的数据,以便于分析。我想要同一行中相邻单元格中的角度,以及下方单元格中的测量时间,但我不确定最好的方法是什么。
有更多 Python 经验的人可以在这里帮助我吗?
编辑:这里的图片显示了我在上面试图解释的内容。
EDIT2:@RonRosenfeld 在下面发布的解决方案有效,但我仍然希望有一个 Python 解决方案来解决这个问题,如前所述。由于我以前没有使用 Excel VBA 的经验,我宁愿使用我熟悉的东西。
【问题讨论】:
-
您能否使用您提供的数据添加您想要的 Excel 输出的快速草图或图像?然后我们可以向您展示一些代码来完成这些结果。
-
查看一种 .NET 语言或 VB 脚本(您不需要为此安装任何东西),使用带有这些语言的 .net 库可以实现与 Microsoft Office 的紧密集成,并且几乎所有内容都是内置。
-
@JohnDorian 我在原始帖子中添加了一张图片。沿着这些思路的东西是我想要的。原始文本文件通常很长,所以我想读取第一块文本的角度和测量时间,然后移动到下一个块的新列,等等......这有帮助吗?
-
@Matthew 我在下面编辑了我的答案,以说明您在图像中显示的布局。我还将您的时间值转换为“真实”Excel 时间,并按照您上面显示的格式进行格式化。
标签: python excel csv python-3.x