gpt4 book ai didi

javascript - 如果数据的格式略有损坏,是否仍然可以确定其文件类型?

转载 作者:行者123 更新时间:2023-12-02 16:22:53 24 4
gpt4 key购买 nike

我有一个随机文本数据,我需要确定其文件类型,例如 .xls、.csv、.tsv、.json 和 .html。目前我正在使用强力来解析所有不同格式的文件。

我的问题发生在文件轻微损坏时,并且在解析过程中会失败。在这些情况下,是否有一个相当好的启发式方法可以猜测文件类型,以便我可以根据这种格式进一步“检查”数据?

我正在使用node.js,以防已经有一个库。我对 Node.js 之外的解决方案持开放态度。

我尝试使用mmmagic,但它只返回“text/plain”,而不是我需要的信息(.tsv,.json,.xml),livescript中的示例代码:

useMagic = (res)->
buf = new Buffer res.body
magic = new mmmagic.Magic! ##return UTF-8 Unicode text, with very long lines, with no line terminators
#magic = new mmmagic.Magic mmmagic.MAGIC_MIME ## return text/plain; charset=utf-8
#magic = new mmmagic.Magic mmmagic.MAGIC_MIME_TYPE ##text/plain



err, magicalres <- magic.detect buf
magicalres |> console.log


url = "https://sheethub.com/data.fda.gov.tw/%E4%B8%8D%E7%AC%A6%E5%90%88%E9%A3%9F%E5%93%81%E8%B3%87%E8%A8%8A%E8%B3%87%E6%96%99%E9%9B%86/i/96/%E7%B3%AF%E7%B1%B3?page=1&format=json"
err, res, body <- request {"url": url, "encoding": null}
result = res |> useMagic

我正在添加编译后的 JavaScript 代码,也许这会更容易:

request = require('request');
mmmagic = require('mmmagic');


useMagic = function(res){
var buf, magic;
buf = new Buffer(res.body);
magic = new mmmagic.Magic();
return magic.detect(buf, function(err, magicalres){
return console.log(
magicalres);
});
};
url = "https://sheethub.com/data.fda.gov.tw/%E4%B8%8D%E7%AC%A6%E5%90%88%E9%A3%9F%E5%93%81%E8%B3%87%E8%A8%8A%E8%B3%87%E6%96%99%E9%9B%86/i/96/%E7%B3%AF%E7%B1%B3?page=1&format=json";
request({
"url": url,
"encoding": null
}, function(err, res, body){
var result;
return result = useMagic(
res);
});

我一直在使用包括 res.headers['content-type'] 在内的方法组合,但仍然有 cases所有方法都失败了。

最佳答案

你厌倦了mmmagic吗?模块,它提供了到libmagic的绑定(bind)?

它允许检查文件中已知的“神奇”标识符。通常,它只需要访问文件的前几个字节即可执行此操作。

我想这种方法本身可能被认为是“蛮力”,但至少它依赖于一个众所周知且经过充分测试的库。

mmmagic 的最初建议未能发挥魔力后更新:

如果您始终使用 request 模块通过 HTTP(S) 请求数据,则响应 header 可能会提供提示:

// returns 'text/json' for your data.fda.gov.tw sample
var mimeType = res.headers['content-type'];

如果做不到这一点,fsql Perl 模块包含 regex-based logic for determining if text is CSV, TSV, YAML or JSON这可能适合在您自己的代码中重新利用。

关于javascript - 如果数据的格式略有损坏,是否仍然可以确定其文件类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28942878/

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