最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

如何使用节点js在tsv文件中写一列?

运维笔记admin11浏览0评论

如何使用节点js在tsv文件中写一列?

如何使用节点js在tsv文件中写一列?

我必须在tsv文件的列中写入json响应,我该怎么做?我正在使用以下代码。请为我找到解决方案?我必须检查它,但是它不起作用。

//npm init -y  gen package.json file
var unProcessedItems = [];
var data = loadData('./Alabama_Pre_Final.tsv');

async function X(i) {
  if (data[i] && data[i][7]) {
    console.log(data[i][7]);

    function address(address_details) {
      request({
          url: '/?auth-id=xxx&auth-token=xxx',
          method: 'POST',
          headers: {
              'content-type': 'application/json'
          },
          body: address_details,
      },
          (error, response, body) => {
              if (!error && response.statusCode == 200) {
                  var res = JSON.parse(body);
                  let objectArray = [];
                  if (res.addresses[0].verified) {
                      objectArray.push(res.addresses[0].api_output[0].delivery_line_1, res.addresses[0].api_output[0].last_line, res.addresses[0].api_output[0].delivery_point_barcode)
                  }
                  var address_data = objectArray.join([separator = ','])
                  console.log(address_data)
              }
          });
  }

  address("1000 Greenhill Blvd NW, Fort Payne, 35967, AL, USA");
  const data = 'Column 19\n1\t2\t3\n4\t5\t6';
  require('fs').writeFileSync('./Alabama_Pre_Final.tsv', data);

    //  i++;
    //  X(i);
  }
}
}
回答如下:

此代码将从输入的.tsv文件中查找地址列(我假设它是制表符分隔的),并将其替换为API调用的结果。

我们也在这里使用请求承诺,以使事情更简单,只需执行:

npm i request-promise

我将输出写到一个单独的文件中,所以我们不会破坏原始内容。

const fs = require("fs");
const rp = require("request-promise");

async function lookupAddress(address_details) {

    var options = {
        url: 'https://us-extract.api.smartystreets/?auth-id=' + AUTH_ID + '&auth-token=' + AUTH_TOKEN,
        method: 'POST',
        headers: {'content-type': 'application/json'},
        body: address_details,
        json: true
    };

    return rp(options).then(res => {
        if (!Array.isArray(res.addresses) || !res.addresses[0] || !res.addresses[0].verified) {
            return "Address not found!";
        }
        const addr = res.addresses[0].api_output[0];
        const objectArray = [addr.delivery_line_1, addr.last_line, addr.delivery_point_barcode];
        return objectArray.join(',');
    }).catch(err => {
        return "Address lookup failed: " + err.message;
    });
}

async function lookupAddresses() { 
    var data = loadData('./Alabama_Pre_Final.tsv');
    const ADDRESS_COLUMN_INDEX = 7;

    for(let row of data) {
        // Here we replace the address column with the lookup result.. we could assign to another column if we wished.
        row[ADDRESS_COLUMN_INDEX] = await lookupAddress(row[ADDRESS_COLUMN_INDEX]);
    }

    let output = data.map(row => row.join("\t")).join("\n");
    // Write to a separate, output file to avoid clobbering the input file.
    fs.writeFileSync('./Alabama_Pre_Final_Output.tsv', output);
}

lookupAddresses();
发布评论

评论列表(0)

  1. 暂无评论