разделение txt на основе ':', но без отметки времени в python - PullRequest
0 голосов
/ 30 мая 2020
05-23 14:14:53.275  A:B:C

в приведенном выше случае я пытаюсь разбить текст на основе: используя line.split(':'), и следующие o / p должны выглядеть как

['05-23 14:14:53.275','A','B','C']

, но вместо этого o / p пришло ['05-23 14','14','53.275','A','B','C']

он также разделяет метку времени. как мне исключить это из разделения

Ответы [ 4 ]

3 голосов
/ 30 мая 2020

Вы также разбиваете на последнем месте. Простое решение - разделить последний пробел, а затем разделить вторую группу:

s = '05-23 14:14:53.275 A:B:C'
front, back = s.rsplit(maxsplit=1)
[front] + back.split(':')

# ['05-23 14:14:53.275', 'A', 'B', 'C']
2 голосов
/ 30 мая 2020

Просто ради удовольствия от использования моржа:

>>> s = '05-23 14:14:53.275  A:B:C'
>>> [(temp := s.rsplit(maxsplit=1))[0], *temp[1].split(':')]
['05-23 14:14:53.275', 'A', 'B', 'C']
2 голосов
/ 30 мая 2020

Разделите строку на пробелы один раз , начиная справа:

parts = line.rsplit(maxsplit=1)

Объедините первые две части и последнюю, разделенную двоеточиями:

parts[:1] + parts[-1].rsplit(":")
['05-23 14:14:53.275', 'A', 'B', 'C']
0 голосов
/ 30 мая 2020

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

([-:\s\d.]*)\s([\w:]*)

Попробуйте это в каком-нибудь регулярном выражении в Интернете, чтобы увидеть, как оно разбивается. Как только вы правильно составите свое регулярное выражение, вы можете использовать группы, чтобы выбрать, какую часть вы хотите, и работать над этим.

import re

str = '05-23 14:14:53.275  A:B:C'
regex = '([-:\s\d.]*)\s([\w:]*)'
groups = re.compile(regex).match(str).groups()
timestamp = groups[0]
restofthestring = groups[1]

# Now you can split the second part using split
splits = restofthestring.split(':')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...