从带有字符串的文件中读取数值

时间:2016-04-19 17:07:53

标签: python readfile

我有一个包含N行的.txt文件。我想读取行号8和行号16,如下所示:

2016-04-01 04:27:30.6216 (2283721) (more text)

2016-04-01 04:59:20.3635 (2283721) (more text)

如何恢复值04:59:20.3635和04:27:30.6216并减去它们?我尝试使用

打开并阅读文件
txt = open(filename)
for line in txt:
    print line

但我不知道如何在变量中存储每一行​​,然后访问我想要到达的行的特定部分。我尝试了一些东西,但我想知道哪种方法最有效。非常感谢!!

3 个答案:

答案 0 :(得分:0)

您可以创建一个字符串数组,然后让文件在while循环中将每一行打印到数组中。 while循环检查您读入数组的数量或何时停止读取文件。之后,只需使用其他方法搜索特定的行或数组索引即可找到所需内容。根据手头的任务,还有很多其他方法。

答案 1 :(得分:0)

python擅长操纵字符串,所以在你的情况下 只是

timestamps =[]
for line in fh:
    timestamps.append(line. split()[1])
print timestamps, timestamps[0]

你甚至可以通过使用库中的datetime或timedelta相关构建来提取/计算时间增量,但首先,正如其他评论,你应该阅读教程,相信我,它很简短,值得一读如果你认为有一天你偶尔会抓住一些线 - 你需要知道python一般可以做些什么

答案 2 :(得分:0)

以下是我的方法。希望它有所帮助:

import re
from datetime import datetime

def get_date_time (t):
    """
    t: date time string;
    parse date time string, and return datetime
    """
    time_string = re.findall('\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{4}', t)[0]
    return datetime.strptime(time_string, '%Y-%m-%d %H:%M:%S.%f')

if __name__ == '__main__':    
    with open('input.txt') as f:
        src = f.read().split('\n') # split into lines
        print get_date_time(src[7]) -  get_date_time(src[5]) # calculate difference

输出:

0:31:49.741900