用Python解析.DAT文件

2024-05-12 07:28:04 发布

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

我需要将特定格式的.dat文件转换为.csv文件。

.dat文件有多个具有重复结构的行。数据放在括号中并有标记。下面是示例数据;它在整个数据文件中重复:

{"name":"ABSDSDSRF","ID":"AFJDKGFGHF","lat":37,"lng":-122,"type":0,"HAC":5,"verticalAccuracy":4,"course":266.8359375,"area":"san_francisco"}

有谁能为剧本提供一个起点吗?


Tags: 文件csv数据name标记id示例数据文件
3条回答

这将创建一个csv,假设.DAT中的每一行都是json。只要按你喜欢的顺序排列标题

import csv, json

header = ['ID', 'name', 'type', 'area', 'HAC', 'verticalAccuracy', 'course', 'lat', 'lng']

with open('file.DAT') as datfile:
    with open('output.csv', 'wb') as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=header)
        writer.writeheader()
        for line in datfile:
            writer.writerow(json.loads(line))

您的行是json格式的。因此,您可以使用:

import json
data = json.loads('{"name":"ABSDSDSRF","ID":"AFJDKGFGHF","lat":37,"lng":-122,"type":0,"HAC":5,"verticalAccuracy":4,"course":266.8359375,"area":"san_francisco"}')

print data.get('name')
print data.get('ID')

这只是一个起点。你必须输入所有的.dat文件。最后,您必须编写导出程序才能将数据保存到csv文件中。

使用regex查找所有数据项。使用ast.literal_eval将每个数据项转换为字典。收集列表中的项目。

import re, ast
result = []
s = '''{"name":"ABSDSDSRF","ID":"AFJDKGFGHF","lat":37,"lng":-122,"type":0,"HAC":5,"verticalAccuracy":4,"course":266.8359375,"area":"san_francisco"}'''

item = re.compile(r'{[^}]*?}')
for match in item.finditer(s):
    d = ast.literal_eval(match.group())
    result.append(d)

如果文件中的每个数据项都位于单独的行上,则不需要正则表达式-只需在文件上迭代即可。

with open('file.dat') as f:
    for line in f:
        line = line.strip()
        line = ast.literal_eval(line)
        result.append(line)

相关问题 更多 >