Проверка последнего элемента строки в списке

У меня есть несколько журналов последовательной связи для анализа времени, поэтому я записываю сообщения с отметками времени в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС.ffffff: Итак, мой файл выглядит так:

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

few lines of bytes

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

and so on...

Я хочу извлечь даты из своего файла, чтобы рассчитать время между сообщениями.

Я хочу работать с датами, используя модуль 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состоянием? Или есть другой способ проверить последний символ строки, если это элемент списка?

Вы также должны вставить несколько строк из sniffinglog.txt.

CristiFati 27.05.2019 14:12
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
1
43
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Это должно сработать, если нет, то ваши строки, вероятно, не заканчиваются на :.

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)

Другие вопросы по теме