ConTeXt에서 CSV의 특정 데이터 라인을 호출하는 방법은 무엇입니까?

ConTeXt에서 CSV의 특정 데이터 라인을 호출하는 방법은 무엇입니까?

"@"을 구분 기호로 사용하고 다음과 같은 데이터가 포함된 CSV 파일이 있습니다.

 Code     @ Title        @ Page     @ Tags                    @ File
 001      @ Buying Tips  @ 1        @ seafood, fish, octopus  @ 1.pdf
 001      @ Buying Tips  @ 2        @ oranges, apples         @ 2.pdf
 001      @ Buying Tips  @ 3        @ bananas                 @ 3.pdf
 002      @ Food Waste   @ 1        @ compost, apples         @ 4.pdf
 002      @ Food Waste   @ 2        @ plastic, paper, bags    @ 5.pdf

특정 줄에 있는 정보를 표시하거나 마지막 열에 나열된 파일을 표시하여 CSV 파일에서 특정 데이터를 호출해야 합니다.

예는 다음과 같습니다.

  • 코드 002의 1페이지를 표시합니다(4.pdf가 표시됨).
  • "사과" 태그가 있는 모든 페이지를 표시합니다(2.pdf 및 4.pdf 표시).
  • CSV에서 "apples" 태그가 있는 두 번째 항목만 표시합니다(4.pdf로 표시됨).
  • 2페이지의 제목, 코드 1을 표시합니다("구매 팁"이 표시됨).

ConTeXt에는 CSV 파일에서 이러한 방식으로 데이터를 호출하는 방법이 있습니까?

답변1

ConTeXt에 내장된 rfc4180splitter. 제공한 예제는 일부 Lua 코드를 사용하여 쉽게 얻을 수 있습니다. 여기서는 시작하는 데 도움이 되는 파서의 사용법을 보여줍니다. 더 많은 파서가 발견되었습니다.util-prs.lua, 꼭 봐야합니다.

\startbuffer[csv]
Code     @ Title        @ Page     @ Tags                    @ File
001      @ Buying Tips  @ 1        @ seafood, fish, octopus  @ 1.pdf
001      @ Buying Tips  @ 2        @ oranges, apples         @ 2.pdf
001      @ Buying Tips  @ 3        @ bananas                 @ 3.pdf
002      @ Food Waste   @ 1        @ compost, apples         @ 4.pdf
002      @ Food Waste   @ 2        @ plastic, paper, bags    @ 5.pdf
\stopbuffer

\startluacode
local csvsplitter = utilities.parsers.rfc4180splitter{separator = "@"}
local rows, colnames = csvsplitter(buffers.getcontent"csv", true)

-- Show what has been parsed on the terminal
inspect(rows)
inspect(colnames)

-- Now pick data and process to your liking
-- ...
\stopluacode

\starttext

\stoptext

터미널에 보시면

table={
 { "001      ", " Buying Tips  ", " 1        ", " seafood, fish, octopus  ", " 1.pdf" },
 { "001      ", " Buying Tips  ", " 2        ", " oranges, apples         ", " 2.pdf" },
 { "001      ", " Buying Tips  ", " 3        ", " bananas                 ", " 3.pdf" },
 { "002      ", " Food Waste   ", " 1        ", " compost, apples         ", " 4.pdf" },
 { "002      ", " Food Waste   ", " 2        ", " plastic, paper, bags    ", " 5.pdf" },
}
table={
 "Code     ",
 " Title        ",
 " Page     ",
 " Tags                    ",
 " File",
}

관련 정보