从似乎没有统一分隔符的字符串中提取值

2024-05-23 14:10:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个日志文件,其中包含与此类似的字符串行

Aug 25 06:45:55 #TS=1598337955#SP=domain.org/shibboleth#IDP=domain.org/idp/shibboleth#USERID=john#DEPT=staff

这些字符串行由值组成;日期、TS、SP、IDP、用户ID和部门,而

Date = Aug 25 06:45:55
TS = 1598337955
SP = domain.org/shibboleth
IDP = domain.org/idp/shibboleth
USERID = john
DEPT = staff

有人能给我建议一种从这些字符串中提取这些值的方法吗,例如TS和USERID?谢谢大家!


Tags: 文件字符串orgdomainidpjohnspaug
2条回答

您可以使用正则表达式(works):

import re

for line in reader:
    linex = str(line)
    ts_value = re.findall('#TS=(.+?)#', linex)
    uid_value = re.findall('#USERID=(.+?)#', linex)

将结果添加到列表中将产生以下输出:

[['1598337955']]
[['john']]

如果不想使用任何外部库,请使用此库(不起作用):

for string in strings:
    for element in string.split('#'):
        if 'TS' in element:
            ts_value = element
        if 'USERID' in element:
            uid_value = element
def extract_from_log(log_line, label):
  if label[-1] != '=':
    label += '='
  start = log_line.index(label)
  end = log_line.index('#', start + len(label))
  return log_line[start + len(label): end]

print(extract_from_log(log_line, 'TS'))
print(extract_from_log(log_line, 'USERID'))

相关问题 更多 >