29 #include <tnt/tnt_array1d.h> 84 template <
typename TokenStore = QString>
108 CSVParser(
const QString &str,
const char &delimiter =
',',
109 bool keepEmptyParts =
true) {
110 parse(str, delimiter, keepEmptyParts);
153 int parse(
const QString &str,
const char &delimiter =
',',
154 bool keepEmptyParts =
true) {
156 str.split(delimiter, keepEmptyParts? QString::KeepEmptyParts : QString::SkipEmptyParts);
158 for(
int i = 0 ; i < tokens.size() ; i++) {
276 CSVReader(
const QString &csvfile,
bool header =
false,
int skip = 0,
278 const bool ignoreComments =
true);
303 return ((nrows < 0) ? 0 : nrows);
352 if(nskip >= 0)
_skip = nskip;
465 void read(
const QString &fname);
476 template <
typename T> TNT::Array1D<T>
convert(
const CSVAxis &data)
const;
510 std::istream &
load(std::istream &ifile);
547 template <
typename T>
549 TNT::Array1D<T> out(data.dim());
550 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.
CSVTable getTable() const
Parse and return all rows and columns in a table array.
CSV Parser seperates fields (tokens) from a string with a delimeter.
CSVColumnSummary getColumnSummary(const CSVTable &table) const
Computes a row summary of the number of distinct columns in table.
void read(const QString &fname)
Reads the entire contents of a file for subsequent parsing.
TokenList result() const
Returns the list of tokens.
int firstRowIndex() const
Computes the index of the first data.
int _skip
Number of lines to skip.
int parse(const QString &str, const char &delimiter=',', bool keepEmptyParts=true)
Parser method accepting string, delimiter and multiple token handling.
void setKeepEmptyParts()
Indicate multiple occurances of delimiters are empty tokens.
CSVParser< QString > Parser
Defines single line parser.
int size() const
Reports the total number of lines read from the stream.
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.
char getDelimiter() const
Reports the character used to delimit tokens in strings.
TNT::Array1D< double > CSVDblVector
Double array def.
bool _header
Indicates presences of header.
TokenStore TokenType
Token storage type.
char _delimiter
Separator of values.
virtual ~CSVReader()
Destructor (benign)
TNT::Array1D< TokenType > TokenList
List of tokens.
int getSkip() const
Reports the number of lines to skip.
CSVParser()
Default constructor.
int rows() const
Reports the number of rows in the table.
TokenList _elements
List of tokens parsed from string.
int size() const
Returns the number of tokens in the parsed string.
CSVAxis getRow(int index) const
Parse and return the requested row by index.
CSVAxis getColumn(int index) const
Parse and return a column specified by index order.
Parser::TokenList CSVAxis
Row/Column token list.
void setHeader(const bool gotIt=true)
Allows the user to indicate header disposition.
Reads strings and parses them into tokens separated by a delimiter character.
int columns() const
Determine the number of columns in the input source.
Collector/container for arbitrary items.
bool isTableValid(const CSVTable &table) const
Indicates if all rows have the same number of columns.
void setComment(const bool ignore=true)
Allows the user to indicate comment disposition.
CSVParser(const QString &str, const char &delimiter=',', bool keepEmptyParts=true)
Constructor that parses strings according to given parameters.
bool haveHeader() const
Returns true if a header is present in the input source.
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.
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.
std::vector< QString > CSVList
Input source line container.
virtual ~CSVParser()
Destructor.
Namespace for ISIS/Bullet specific routines.
CollectorMap< int, int > CSVColumnSummary
Column summary for all rows.
TNT::Array1D< CSVAxis > CSVTable
Table of all rows/columns.
bool keepEmptyParts() const
Returns true when preserving succesive tokens, false when they are treated as one token...
const TokenType & operator()(const int nth) const
Returns the nth token in the parsed string.
CSVAxis getHeader() const
Retrieve the header from the input source if it exists.
bool _ignoreComments
Ignore comments on read.
TNT::Array1D< T > convert(const CSVAxis &data) const
Converts a row or column of data to the specified type.
TNT::Array1D< int > CSVIntVector
Integer array def.