如何拆分列表中的元素并从列表中获取日期和时间

时间:2018-09-06 14:36:33

标签: python list split readlines

从开始以来,我一直在努力用Python导入文件并以最佳方式读取行。 例如,我拥有的文件如下:

2015 02 25    09:00:00
A second line
One more line

现在,我想从第一行中提取日期和时间;为此,我想以这种格式使用它,使其在datetime模块中工作

(2015,02,25,09,00,00)

这就是我所拥有的

with open('file.txt', newline='') as inputfile:
  data = inputfile.readlines()
  print(data[0])
Out: ['2015 02 25    09:00:00']

这给了我们列表的第一个元素。现在,我要用逗号分隔列表。现在,当我尝试例如:

In: datetime = [i.split(':') for i in file[0]]
Out: [['2015 02 25    09', '00', '00']]

我得到了一个列表列表,这不会使事情变得更简单。而且我们还没有拆分空白。如何获得日期和时间的最佳方法是什么? 而且,一般而言,您知道有什么好的教程可以练习列表/字符串拆分,遍历文本文件/列表等。

4 个答案:

答案 0 :(得分:5)

要从您的输入中获取日期和时间(或更确切地说是datetime),最容易使用strptime

import datetime

s = "2015 02 25    09:00:00"

dt = datetime.datetime.strptime(s, "%Y %m %d %H:%M:%S")

print(dt)

输出:

2015-02-25 09:00:00

您甚至不必费心“格式”字符串中的空格。

然后您可以根据需要转换/格式化datetime对象。

答案 1 :(得分:0)

我想你想要这个:

line="2015 02 25    09:00:00\n"   # here line is data[0]

toks = line.split()
date = " ".join(toks[:3])
time = toks[-1]   # you can split it according to ":" now if you want

print(date)
print(time)

打印:

2015 02 25
09:00:00

根据1-n个空格分割标记,然后将前三个标记连接起来以获取日期,并获取最后一个元素以获取时间。

Python 3允许拆星,因此您可以直接执行以下操作:

*datetoks,time = line.split()
date = " ".join(datetoks)

({datetoks包含所有令牌,但最后一个感谢*

答案 2 :(得分:0)

为什么不一一读完每一行,而是仅将每一行追加到列表中?

mylist = []
with open(filename) as f:
    for line in f.readlines():
        mylist.append(line.strip("\n")) \\strip to get rid of the new line from the file
    print mylist

这将单独读取文件中的每一行,然后将每一行添加到以逗号分隔的列表中

这是您要找的吗?

输出看起来像这样

['2015 02 25    09:00:00', '2015 02 27    09:10:00', '2015 02 29    09:20:00']

从文件的3行开始,但是如果文件中有3个不同的条目,我将使用相同的条目,它将把不同的条目放入列表中

我认为,如果您可以提出最终的结果,那么这里的任何人实际上都不知道您想要什么,这将使每个人受益良多,并且可以更快地得到答案

答案 3 :(得分:0)

用空格.split(" ")分隔行,并从前3个字符串中提取yearmonthday。现在,最后一个字符串具有time,用:.split(":")进行拆分,以提取hoursminutesseconds

f = open("sample.txt", "r")

data = f.read()
lines = data.split("\n")
first_line = lines[0]

str_arr = first_line.split(" ")
year = int(str_arr[0])
month = int(str_arr[1])
day = int(str_arr[2])
print("year : " + str(year))
print("Month : " + str(month))
print("Day : " + str(day))

last_index = len(str_arr)-1
time = str_arr[last_index].split(":")
hours = int(time[0])
minutes = int(time[1])
seconds = int(time[2])
print("Hours : " + str(hours))
print("Minutes : " + str(minutes))
print("seconds : " + str(seconds))

f.close()