У меня есть следующий журнал, и я хочу извлечь второй «DDD -xxxxx» идентификатор из каждой записи (если существует второй DDD id):
cs:444 - br:/main/j_DDD-50535/DDD-68009
cs:445 - br:/main/j_DDD-50535/j_DDD-70220
cs:446 - br:/main/j_DDD-50535/j_DDD-70117
cs:447-Merge from branch: /main/j_DDD-50544/j_DDD-61183
Requested by: Smith, John (UserID1)
cs:448-Merge from branch: /main/j_DDD-4822
Requested by: Grant, Huge (userID2)
cs:449-Daily automated release of 3.5.5.4
Используя регулярное выражение, я нашел обходной путь, чтобы получить их, но я думаю, что должно быть возможно получить намного проще:
def read_log():
log_file_name = "log"
with open(log_file_name, "r") as file:
log_file = file.read().split("cs:")
return log_file
def key_creator():
log_data = read_log()
keys = []
for line in log_data:
# print(line)
if line[:5].isdigit():
search = re.search('/j_(.*)\n', line)
if hasattr(search, "group"):
search = search.group(1).split('/j_')
if 1 < len(search) and search[1][:3] == "DDD":
keys.append(search[1])
print(line)
return keys
key_creator()
Редактировать: Просто чтобы уточнить: - за строкой DDD может следовать неопределенное количество цифр, (DDD -23, DDD -342, DDD -4842, DDD -44332 ... также возможны записи)