탭으로 구분 된 형식이므로 데이터가 표처럼 보이는 텍스트 파일이 있습니다.
html 테이블 형식으로 텍스트 파일에서 몇 개의 값만 표시하려면 어떻게합니까?
내 텍스트 파일은 다음과 같습니다.
@ RUNNO TRNO R# O# C# CR MODEL... TNAM..................... FNAM.... WSTA.... SOIL_ID... SDAT PDAT EDAT ADAT MDAT HDAT DWAP CWAM HWAM HWAH BWAH PWAM HWUM H#AM H#UM HIAM LAIX IR#M IRCM PRCM ETCM EPCM ESCM ROCM DRCM SWXM NI#M NICM NFXM NUCM NLCM NIAM CNAM GNAM PI#M PICM PUPC SPAM KI#M KICM KUPC SKAM RECM ONTAM ONAM OPTAM OPAM OCTAM OCAM DMPPM DMPEM DMPTM DMPIM YPPM YPEM YPTM YPIM DPNAM DPNUM YPNAM YPNUM NDCH TMAXA TMINA SRADA DAYLA CO2A PRCP ETCP ESCP EPCP
1 1 1 0 0 WH CSCER046 DRYLAND - 0 KG N/HA KSAS0001 KSAS8101 IBWH980018 1981279 1981289 1981294 1982141 1982174 1982174 46 7615 2848 2848 0 3308 0.0250 11371 22.0 0.374 2.0 0 0 600 422 188 234 12 115 141 1 0 -99 76 127 54 67 54 -99 -99 -99 -99 -99 -99 -99 -99 0 7842 7841 0 0 78645 78603 13.1 18.8 40.5 -99 4.9 7.0 15.1 -99 -99 100.6 -99 37.6 245 13.1 1.2 12.4 12.6 340.7 579.8 405.2 -99 -99
2 2 1 0 0 WH CSCER046 DRYLAND - 60 KG N/HA KSAS0001 KSAS8101 IBWH980018 1981279 1981289 1981294 1982141 1982174 1982174 46 10018 4150 4150 0 4656 0.0288 14411 23.6 0.414 2.5 0 0 600 431 212 219 12 110 139 1 60 -99 105 132 78 94 79 -99 -99 -99 -99 -99 -99 -99 -99 0 7842 7841 0 0 78652 78608 17.3 24.2 47.3 -99 7.2 10.0 19.6 -99 167.0 95.6 69.2 39.6 245 13.1 1.2 12.4 12.6 340.7 579.8 413.4 -99 -99
3 3 1 0 0 WH CSCER046 DRYLAND - 180 KG N/HA SP KSAS0001 KSAS8101
html 테이블에 TRNO, Model, FNAM, WSTA를 표시하고 싶습니다.
제공된 데이터는 탭으로 구분 된 값이 아니라 Ascii 테이블처럼 보입니다. 두 솔루션을 모두 추가했습니다.
아스키 테이블을위한 솔루션 - https://jsfiddle.net/libin_v/uutc6gtk/
정규식을 사용하여 헤더에서 키 가져 오기
// Get all keys from Header Row
var lines = asciiTable.split('\n');
var regexPattern = /\S+\s*/g;
var headers = lines[0].match(regexPattern);
방금 파싱 한 키를 사용하여 줄을 연결하여 개별 값을 가져옵니다. 키는 아직 다듬어지지 않았습니다 (키와 함께 공백이 있음). 이렇게하면 데이터를 연결할 수 있습니다.
// fetch individual values (Also filter based on allowed keys)
var allowedKeys = ["TRNO", "MODEL...", "FNAM....", "WSTA...."];
for (i = 1; i < lines.length; i++) {
start = 0;
value = "";
valueArray = [];
headers.forEach(function(key) {
if (allowedKeys.includes(key.trim())) {
value = lines[i].slice(start, start + key.length);
valueArray.push(value.trim());
}
start += key.length;
});
rows.push(valueArray);
}
헤더를 삽입하여 2D 배열 완성
// Insert Header in array
headers.forEach(function(key) {
if (allowedKeys.includes(key.trim())) {
valueArray.push(key.trim());
}
});
rows.unshift(valueArray);
2D 배열을 HTML 테이블로 렌더링-2D 배열을 HTML 로 변환 하는 요점에 대해 @veganista에게 감사드립니다.
// Display 2D-array in Table
var table = arrayToTable(rows, {
thead: true,
attrs: {
class: 'table'
}
})
탭으로 구분 된 값에 대한 솔루션-https: //jsfiddle.net/libin_v/cpa8xy85/
이것들을 객체로 변환하십시오. PapaParse를 사용 했습니다.
// Convert Tab Seperated Values to Objects
var results = Papa.parse(tabSeperatedString, config);
console.log("Results:", results);
우리가 좋아하는 키로 객체를 변형하십시오. (간단히 말하면 원하지 않는 키를 제거하십시오)
// Remove unwanted keys
var allowedKeys = ["TRNO", "MODEL...", "FNAM....", "WSTA...."];
results.data.forEach(function(row) {
Object.keys(row).forEach(function(key) {
if (allowedKeys.includes(key) === false) {
delete row[key];
}
});
});
console.log("Stripped results:", results);
이러한 개체를 HTML로 변환
// generate html
var html = "<table border='1|1'>";
Object.keys(results.data[0]).forEach(function(key) {
html += "<th>" + key + "</th>";
});
results.data.forEach(function(row) {
html += "<tr>";
Object.keys(row).forEach(function(key) {
html += "<td>" + row[key] + "</td>";
});
html += "</tr>";
});
html += "</table>";
$('body').append(html);
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다