%20.png)
Ich habe vier mögliche Sätze in der CSV-Datei. Beispiel: Satz 1 hier, noch ein Satz, noch ein Satz hinzugefügt, letzter Satz.
In Latex möchte ich 1 drucken, wenn „Satz 1 hier“ vorhanden ist. So etwas wie DECODE in SQL. Können Sie mir bitte eine URL zeigen, wo ich ähnliche Funktionen erlernen kann.
Grüße,
Antwort1
Da Sie speziell nach SQL-Funktionalität suchen, schlage ich vor, dass Sie sichDas datatool
Paket. Der MWE liest die CSV-Datei MyData.csv
und sucht dann nach „noch einem Satz“ und „noch drei Sätze“:
Anmerkungen:
- Das
filecontents
Paket wurde verwendet, um eine zu lesende Datei für diesen Testfall einzurichten. Es wird in Ihrem tatsächlichen Anwendungsfall nicht benötigt. - Ich habe verwendet
newtoggle
vonDasetoolbox
Paketda ich diese Syntax gegenüber der\newif
Syntax bevorzuge. Wenn Sie jedoch kein zusätzliches Paket einbinden möchten, sollte es ziemlich einfach sein, dies so anzupassen, dass es verwendet wird\newif
odereinige andere bedingte Methoden. - Ändern Sie den Text „Gefunden“ in „1“ (wie in der Frage), wenn das die einzige gewünschte Funktionalität ist, oder passen Sie den Code dort an, um etwas anderes zu tun.
Code:
\documentclass{article}
\usepackage{datatool}
\usepackage{xstring}
\usepackage{etoolbox}
%\usepackage{filecontents}% <-- Commented out to prevent overwriting MyData.csv
\begin{filecontents*}{MyData.csv}
sentence 1 here,
one more sentence,
one more sentence added,
last sentence,
\end{filecontents*}
\newtoggle{FoundInDB}
\newcommand*{\CheckIfInDB}[4]{%
% #1 = database
% #2 = string to chek
% #3 = code to execute if string is found
% #4 = code to execute if string is NOT found
\global\togglefalse{FoundInDB}%
\DTLforeach{#1}{%
\CurrentSentence=Sentence%
}{%
\IfStrEq{\CurrentSentence}{#2}{%
%% Found string -- we are done
\global\toggletrue{FoundInDB}%
\dtlbreak% No point in searching rest of file
}{%
% Still haven't found what we are looking for :-(
}%
}%
\iftoggle{FoundInDB}{#3}{#4}%
}%
\begin{document}
\DTLloaddb[noheader,keys={Sentence}]{myDB}{MyData.csv}
\CheckIfInDB{myDB}{one more sentence}{Found it}{Not Found!}
\CheckIfInDB{myDB}{three more sentences}{Found it}{Not Found!}
\end{document}
Antwort2
Wenn ich das richtig verstehe, möchten Sie eine Zeile in einer CSV-Datei überprüfen und basierend auf diesem Satz eine Nummer zuweisen.
Sie können dies einfach mithilfe von R- und Sweave-Dateien erreichen (im Grunde handelt es sich dabei um LaTeX-Dateien mit R-Sprachfunktionalität). Denken Sie daran, das knitr-Paket zu R Studio hinzuzufügen.
\begin{document}
Sie beginnen die Datei also als normales Latex und schreiben dann den folgenden Block
<<echo=false>>=
Data<-read.csv("file.path.here")
sapply(Data, function(x){
if(x=="sentence 1 here"){
return(1)
} elseif(x=="sentence2"){
return(2)
}else{
return(0)
}
@