【发布时间】:2014-04-07 18:39:33
【问题描述】:
我需要从文本文件中读取数据,对其进行操作,并将其全部存储在数组或列表或其他一些数据结构中,以便我可以将其制成表格,并使用 matplotlib 对其进行绘图。
我打算有一个输入语句,来存储一个治疗日期和时间。输入文件中的日期和时间将从该日期时间中减去,以给出自治疗以来的时间(以分钟或小时为单位)。
首先,我正在使用的输入文件格式如下:
!05/04/2014
@1332
Contact Angle (deg) 106.87
Contact Angle Left (deg) 106.90
Contact Angle Right (deg) 106.85
Wetting Tension (mN/m) -21.13
Wetting Tension Left (mN/m) -21.16
Wetting Tension Right (mN/m) -21.11
Base Tilt Angle (deg) 0.64
Base (mm) 1.7001
Base Area (mm2) 2.2702
Height (mm) 1.1174
Sessile Volume (ul) 2.1499
Sessile Surface Area (mm2) 6.3842
Contrast (cts) 255
Sharpness (cts) 186
Black Peak (cts) 0
White Peak (cts) 255
Edge Threshold (cts) 105
Base Left X (mm) 2.435
Base Right X (mm) 4.135
Base Y (mm) 3.801
RMS Fit Error (mm) 2.201E-3
@1333
Contact Angle (deg) 105.42
Contact Angle Left (deg) 106.04
Contact Angle Right (deg) 104.80
Wetting Tension (mN/m) -19.36
Wetting Tension Left (mN/m) -20.12
Wetting Tension Right (mN/m) -18.59
Base Tilt Angle (deg) 0.33
Base (mm) 1.6619
Base Area (mm2) 2.1691
Height (mm) 0.9837
Sessile Volume (ul) 1.6893
Sessile Surface Area (mm2) 5.3962
Contrast (cts) 255
Sharpness (cts) 190
Black Peak (cts) 0
White Peak (cts) 255
Edge Threshold (cts) 105
Base Left X (mm) 2.397
Base Right X (mm) 4.040
Base Y (mm) 3.753
RMS Fit Error (mm) 3.546E-3
在文件中,每个新日期都以“!”开头并且采用显示的格式 (dd/mm/yyyy)。
表格应包含输入文件中的日期时间、接触角以及最后治疗后的分钟数。
下面的代码从文本文件中提取所需的相关信息,并写入另一个文件,但我不知道存储信息的最佳方式是什么。
with open(infile) as f, open(outfile, 'w') as f2:
for line in f:
if line.split():
if line.split()[0][0] == '!':
for i in range(1,11):
current_date += (line.split()[0][i])
f2.write(current_date[:2] + ' ' + current_date[3:5] + ' ' + current_date[6:] + '\n')
current_date = ""
if line.split()[0][0] == '@':
for i in range(0,5):
measure_time += (line.split()[0][i])
f2.write(measure_time[1:3] + ":" + measure_time[3:] + '\n')
if line.split()[0] == "Contact" and line.split()[2] == "(deg)":
contact_angle = line.split()[-1].strip()
f2.write("Contact Angle (deg): " + contact_angle + '\n\n')
measure_time = ""
else:
continue
我也一直在玩 datetime,并且有一些代码可以计算从单个输入处理以来的时间,但我需要它来应用输入文件中的每个日期和时间。
from datetime import datetime
import numpy as np
dt = input("Enter treatment date and time in format: dd mm yyyy hh:mm\n")
#dt = '27 03 2014 12:06'
dob = datetime.strptime(dt,'%d %m %Y %H:%M')
b = datetime(2014,3,27,16,22,0)
c = b-dob
print(c.seconds)
print(c.seconds/60)
print(c.seconds//3600)
最后,我想使用 matplotlib 绘制接触角与治疗后时间的关系。
如果有人能帮我解决这个问题,我将不胜感激。
【问题讨论】:
-
你没有陈述你的问题。你有什么问题?
-
对不起,如果问题不清楚。我可以将相关数据提取到文件中,但我希望能够将上述点(日期时间、接触角、治疗后的时间)制成表格并绘制图表。我不知道该怎么做,以及如何将数据存储在 Python 中以进行操作。
-
您的问题几乎没有问题,而关于 SO 的一般规则有时是一个问题。给我一点时间,我给你举例说明如何解析与你相似的数据(但不要指望完整的解决方案,请)。
-
一件事:您确定文件中的数据是用空格分隔的吗?如果有制表符,解析这个文件会更容易理解。
-
非常感谢。标签和值之间的空格由制表符分隔。
标签: python arrays numpy matplotlib