我已成功使用 MechanicalSoup(Python 庫)從我學校的網站上抓取資料,并創建了兩個 .txt 檔案(upcomingFixturesData.txt 和 resultsFixturesData.txt),我想用它們來填充其中一個的內容我的表格(我使用 Gatsby 作為單頁網站)。.txt 檔案都如下所示:
22/03/2022
4:15pm
Hockey
Hockey v SchoolName: U16 (a, 下午 3:00 離開)
22/03/2022
10:00am
Fives
Fives 全國錦標賽:U18(學校名稱,上午 9 點出發)
2022年 3 月 22
日下午 4:00
無擋板籃球
:離開者訴公共休息室 (h)
目前,我的 js 代碼正在為運動表使用虛擬資料:
export default function SportsSection() {
return (
<Wrapper>
<RowWrapper>
<Description>Fixtures</Description>
<Row
number="1"
title="Football"
subtitle="Boys' U14 A and B team v SchoolName (away, leave at 12:20pm)"
time="14:30"
/>
<Row
number="2"
title="Hockey"
subtitle="Hockey v SchoolName: U16 and 2st XI (away, depart 2.00pm)"
time="15:45"
/>
<Row
number="3"
title="Netball"
subtitle="Netball: A and B team v SchoolName (home)"
time="16:20"
/>
<Row
number="4"
title="Rowing"
subtitle="J15 vs SchoolName (Location)"
time="15:30"
/>
</RowWrapper>
</Wrapper>
)
}
我制作了一個類似的表格來顯示每個學生的時間表,這要容易得多,因為它已經是一個 .json 檔案,而且我可以使用“地圖”:
export default function TimetableSection() {
const data = require("../../data/scraped/timetableWeekData.json")
var days = ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
var d = new Date()
var dayName = days[d.getDay()]
var tmrName = days[d.getDay() 1]
var hrs = new Date().getHours()
const todayData = data.events.filter(
// event => event["start-date-display"] == "Today"
event => event.description.includes(hrs <= 20 ? dayName : tmrName)
)
return (
<Wrapper>
<RowWrapper>
<Description>Timetable {hrs <= 20 ? "Today" : "Tomorrow"}</Description>
{todayData.map((item, index) => (
<Row
number={index 1}
title={item.subject}
color={item.colour}
subtitle={item.chairperson ", " item.location}
time={item.starttime}
/>
))}
</RowWrapper>
</Wrapper>
)
}
有什么方法可以映射 .txt 檔案以填充我的每個表行,或者如果失敗了,我還能如何在我的 javascript 代碼中使用這些資料(在專案檔案系統中)?
非常感謝您提前提供的幫助!
uj5u.com熱心網友回復:
就像這樣,但是有了這個功能,你的 txt 需要正確的結構來映射
const fs = require("fs");
const _ = require("lodash");
const fileTxt = fs.readFileSync("./test.txt", { encoding: "utf-8" });
const eachData = fileTxt.split(/^\r\n/gm); // split for each object
const resultArr = [];
let number = 0;
eachData.forEach((data) => {
const arrOneData = data.split(/\r\n/gm); // split for each object property
resultArr.push({
number,
date: arrOneData[0],
time: arrOneData[1],
title: arrOneData[2],
subtitle: arrOneData[3],
});
number = 1;
});
console.log("resultArr", resultArr);
// resultArr [
// {
// number: 0,
// date: '22/03/2022',
// time: '4:15pm',
// title: 'Hockey',
// subtitle: 'Hockey v SchoolName: U16 (a, leave at 3.00pm)'
// },
// {
// number: 1,
// date: '22/03/2022',
// time: '10:00am',
// title: 'Fives',
// subtitle: 'Fives National Championships: U18 (SchoolName, leave at 9.00am)'
// },
// {
// number: 2,
// date: '22/03/2022',
// time: '4:00pm',
// title: 'Netball',
// subtitle: 'Netball: Leavers v Common Room (h)'
// }
// ]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/446029.html
標籤:javascript 节点.js 文件 解析 文件系统
上一篇:在python中,在行中查找標記
下一篇:決議硒,滾動的問題
