簡體   English   中英

檢查列表中字符串的最后一個元素

[英]Checking last element of a string in a list

我有一些串行通信日志來分析時間,所以我用格式YYYY-MM-DD HH:MM:SS.ffffff記錄時間戳的消息:所以我的文件看起來像這樣:

YYYY-MM-DD HH:MM:SS.ffffff:

幾行字節

YYYY-MM-DD HH:MM:SS.ffffff:

等等...

我想從我的文件中提取日期,以便我可以計算消息之間的時間

我想使用datetime模塊操作日期,一開始我想在每個日期結束時去除冒號。 我已經讀取了我的文件並將其保存在變量中,該變量是一個字符串列表,每個元素都是一行。 現在我想創建僅包含日期的第二個列表,僅提取以冒號結尾的那些行。

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

lines=(f.readlines())
lines_number=len(lines)
i=0
dates=[]
while i<lines_number:
    if lines[i].endswith(":"):
        dates.append(lines[i])
    i+=1 
print (dates)

我檢查了lines是否正確創建,但是沒有元素附加到列表dates 它仍然是空的。 我的if條件有問題嗎? 或者是否有另一種方法來檢查字符串的最后一個字符,如果它是一個列表元素?

這應該有用,如果沒有,那么你的線可能不會以:

with open("sniffinglog.txt", "r") as f:
    content = f.readlines()

dates = []
for line in content:
    if line.strip().endswith(":"):
        dates.append(line.rstrip(":"))

print(dates)

您需要從文件的每一行刪除新行。

嘗試更換

lines=(f.readlines())

lines=[l.strip() for l in f.readlines()]

一種更好的方法來查找行中的時間戳

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

lines=(f.readlines())
lines_number=len(lines)
i=0
dates=[]
while i<lines_number:
    # Check if line is a timestamp.
    if time.strptime(line[:19], '%Y-%m-%d %H:%M:%S'):
        dates.append(lines[i])
    i+=1 
print (dates)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM