gpt4 book ai didi

python - 使用 Python 从事件日志文件中提取所需的变量

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:19 25 4
gpt4 key购买 nike

enter image description here

示例事件日志文件的第一行,这里我已经成功地提取了除了最后一个键值对属性之外的所有内容-

{"event_type":"ActionClicked","event_timestamp":1451583172592,"arrival_timestamp":1451608731845,"event_version":"3.0",
"application":{"app_id":"7ffa58dab3c646cea642e961ff8a8070","cognito_identity_pool_id":"us-east-1:
4d9cf803-0487-44ec-be27-1e160d15df74","package_name":"com.think.vito","sdk":{"name":"aws-sdk-android","version":"2.2.2"}
,"title":"Vito","version_name":"1.0.2.1","version_code":"3"},"client":{"client_id":"438b152e-5b7c-4e99-9216-831fc15b0c07",
"cognito_id":"us-east-1:448efb89-f382-4975-a1a1-dd8a79e1dd0c"},"device":{"locale":{"code":"en_GB","country":"GB",
"language":"en"},"make":"samsung","model":"GT-S5312","platform":{"name":"ANDROID","version":"4.1.2"}},
"session":{"session_id":"c15b0c07-20151231-173052586","start_timestamp":1451583052586},"attributes":{"OfferID":"20186",
"Category":"40000","CustomerID":"304"},"metrics":{}}

大家好,我正在尝试从事件日志文件中提取内容,如附图所示。根据要求,我必须获取客户 IDoffer id , category 这些是我需要从此事件日志文件中提取的重要变量。这是 csv 格式的文件。我尝试使用正则表达式,但它不起作用,因为您可以观察到每一列的格式都不同。如您所见,第一行有 category customer id offer id 并且第二行完全空白,在这种情况下正则表达式将无法正常工作我们有考虑我们必须考虑所有可能的条件,我们有 14000 个 sample.in 事件日志文件 ...#Jason # Parsing #Python #Pandas

最佳答案

编辑

编辑后的数据现在看起来是 JSON 数据。您仍然可以使用 literal_eval 如下,或者您可以使用 json模块:

import json

with open('event.log') as events:
for line in events:
event = json.loads(line)
# process event dictionary

要访问 CustomerIDOfferIDCategory 等,您需要访问与键 属性关联的嵌套字典'event 字典中:

print(event['attributes']['CustomerID'])
print(event['attributes']['OfferID'])
print(event['attributes']['Category'])

如果某些键可能丢失,请改用 dict.get():

print(event['attributes'].get('CustomerID'))
print(event['attributes'].get('OfferID'))
print(event['attributes'].get('Category'))

现在,如果 key 丢失,您将得到 None

您可以扩展此原则以使用字典访问其他项目。

如果我理解您的问题,您还想创建一个包含提取字段的 CSV 文件。您将提取的值与 csv.DictWriter 一起使用,如下所示:

import csv

with open('event.log') as events, open('output.csv', 'w') as csv_file:
fields = ['CustomerID', 'OfferID', 'Category']
writer = csv.DictWriter(csv_file, fields)
writer.writeheader()
for line in events:
event = json.loads(line)
writer.writerow(event['attributes'])

DictWriter 会在字典缺少键时将字段留空。


原始答案数据不是 CSV 格式,它似乎包含 Python 字典字符串。这些可以使用 ast.literal_eval() 解析成 Python 字典。 :

from ast import literal_eval

with open('event.log') as events:
for line in events:
event = literal_eval(line)
# process event dictionary

关于python - 使用 Python 从事件日志文件中提取所需的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38289890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com