从开始以来,我一直在努力用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']]
我得到了一个列表列表,这不会使事情变得更简单。而且我们还没有拆分空白。如何获得日期和时间的最佳方法是什么? 而且,一般而言,您知道有什么好的教程可以练习列表/字符串拆分,遍历文本文件/列表等。
答案 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个字符串中提取year
,month
和day
。现在,最后一个字符串具有time
,用:
即.split(":")
进行拆分,以提取hours
,minutes
和seconds
。
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()