29 #include <tnt/tnt_array1d.h>
80 template <
typename TokenStore = QString>
104 CSVParser(
const QString &str,
const char &delimiter =
',',
105 bool keepEmptyParts =
true) {
106 parse(str, delimiter, keepEmptyParts);
146 int parse(
const QString &str,
const char &delimiter =
',',
147 bool keepEmptyParts =
true) {
149 str.split(delimiter, keepEmptyParts? QString::KeepEmptyParts : QString::SkipEmptyParts);
151 for(
int i = 0 ; i < tokens.size() ; i++) {
265 CSVReader(
const QString &csvfile,
bool header =
false,
int skip = 0,
267 const bool ignoreComments =
true);
292 return ((nrows < 0) ? 0 : nrows);
341 if(nskip >= 0)
_skip = nskip;
452 void read(
const QString &fname);
463 template <
typename T> TNT::Array1D<T>
convert(
const CSVAxis &data)
const;
497 std::istream &
load(std::istream &ifile);
534 template <
typename T>
536 TNT::Array1D<T> out(data.dim());
537 for(
int i = 0 ; i < data.dim() ; i++) {
std::istream & load(std::istream &ifile)
Reads all lines from the input stream until an EOF is encoutered.
CSVList _lines
List of lines from file.
CSV Parser seperates fields (tokens) from a string with a delimeter.
char getDelimiter() const
Reports the character used to delimit tokens in strings.
int rows() const
Reports the number of rows in the table.
bool isTableValid(const CSVTable &table) const
Indicates if all rows have the same number of columns.
void read(const QString &fname)
Reads the entire contents of a file for subsequent parsing.
CSVAxis getColumn(int index) const
Parse and return a column specified by index order.
int _skip
Number of lines to skip.
void setKeepEmptyParts()
Indicate multiple occurances of delimiters are empty tokens.
int size() const
Reports the total number of lines read from the stream.
CSVParser< QString > Parser
Defines single line parser.
int size() const
Returns the number of tokens in the parsed string.
bool keepEmptyParts() const
Returns true when preserving succesive tokens, false when they are treated as one token...
CSVAxis getHeader() const
Retrieve the header from the input source if it exists.
void setSkip(int nskip)
Indicate the number of lines at the top of the source to skip to data.
bool _keepParts
Keep empty parts between delimiter.
double toDouble(const QString &string)
Global function to convert from a string to a double.
TNT::Array1D< double > CSVDblVector
Double array def.
bool _header
Indicates presences of header.
int parse(const QString &str, const char &delimiter= ',', bool keepEmptyParts=true)
Parser method accepting string, delimiter and multiple token handling.
TokenStore TokenType
Token storage type.
char _delimiter
Separator of values.
virtual ~CSVReader()
Destructor (benign)
TNT::Array1D< TokenType > TokenList
List of tokens.
CSVTable getTable() const
Parse and return all rows and columns in a table array.
CSVParser()
Default constructor.
bool haveHeader() const
Returns true if a header is present in the input source.
int getSkip() const
Reports the number of lines to skip.
int columns() const
Determine the number of columns in the input source.
CSVAxis getRow(int index) const
Parse and return the requested row by index.
TokenList _elements
List of tokens parsed from string.
Parser::TokenList CSVAxis
Row/Column token list.
void setHeader(const bool gotIt=true)
Allows the user to indicate header disposition.
int firstRowIndex() const
Computes the index of the first data.
Reads strings and parses them into tokens separated by a delimiter character.
Collector/container for arbitrary items.
void setComment(const bool ignore=true)
Allows the user to indicate comment disposition.
void clear()
Discards all lines read from an input source.
friend std::istream & operator>>(std::istream &is, CSVReader &csv)
Input read operator for input stream sources.
TNT::Array1D< T > convert(const CSVAxis &data) const
Converts a row or column of data to the specified type.
void setSkipEmptyParts()
Indicate multiple occurances of delimiters are one token.
CSVReader()
Default constructor for CSV reader.
void setDelimiter(const char &delimiter)
Set the delimiter character that separate tokens in the strings.
CSVParser(const QString &str, const char &delimiter= ',', bool keepEmptyParts=true)
Constructor that parses strings according to given parameters.
std::vector< QString > CSVList
Input source line container.
virtual ~CSVParser()
Destructor.
CSVColumnSummary getColumnSummary(const CSVTable &table) const
Computes a row summary of the number of distinct columns in table.
const TokenType & operator()(const int nth) const
Returns the nth token in the parsed string.
CollectorMap< int, int > CSVColumnSummary
Column summary for all rows.
TokenList result() const
Returns the list of tokens.
TNT::Array1D< CSVAxis > CSVTable
Table of all rows/columns.
bool _ignoreComments
Ignore comments on read.
TNT::Array1D< int > CSVIntVector
Integer array def.