文件头以列表的形式传入函数,列表的每个元素表示每一列的标识
读
with open(path, 'r') as record_data:
# DictReader会将第一行的内容(类标题)作为key值,第二行开始才是数据内容
csv_reader = csv.DictReader(record_data)
for row in csv_reader:
if row["attributeName"] != "" and row["attributeValue"] != "":
attributes.append(
{row["attributeName"]: row["attributeValue"]})
写
fieldnames = ["Timestamp", "Thread", "Type", "Activity", "PID", "TTL"]
# 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
with open('log.csv', 'w') as csv_data:
# 编写csv文件的标题
writer = csv.DictWriter(csv_data, fieldnames)
writer.writeheader()
for line in data:
# re——字符串匹配模块
match_type = re.match(
r'(.*?)\s(0x.*?)\s+(Default|Error)\s+(0x.*?)\s+(\d+)\s+(.*?)\n', line)
try:
timestamp = match_type.group(1)
log_thread = match_type.group(2)
log_type = match_type.group(3)
log_activity = match_type.group(4)
log_pid = match_type.group(5)
log_ttl = match_type.group(6)
# 先写数据名再写入数据
writer.writerow(
dict(zip(fieldnames, [timestamp, log_thread, log_type, log_activity, log_pid, log_ttl])))
except:
zip( keyList, valueList ) 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表
dict(zip( 将zip后的元组转换为dict