我有一个必须读取的CSV文件,并且在写入之前已删除重复的值。
重复值将基于两列(日期,价格)(AND条件语句)。因此,在下面的示例中,第1行,第2行和第4行将被写入CSV。第3行符合条件(因为第1行的日期和价格相同),因此将被排除(不写入CSV)。
address floor date price
40 B STREET 18 3/29/2015 2200000
40 B STREET 23 1/7/2015 999000
40 B STREET 18 3/29/2015 2200000
40 B STREET 18 4/29/2015 2200000
答案 0 :(得分:0)
您可以使用日期和价格地图查找重复项。我没有分享完整的代码,但这将为您提供如何做所需的指示。
1)创建日期和价格的地图。
std::map<std::string, long> dataMap;
2)从CSV读取一行。在dataMap中进行查找。如果找到了key
(日期),请检查value
(价格),如果两者都匹配,则表示重复,您应该忽略此记录。
// Read a line from CSV and parse it to store
// different values in below variables. This should
// be in a loop where each loop will be fetching
// a line from the CSV. The loop should continue till
// you reach end of the input CSV file.
int floorValue;
std::string addressValue;
std::string dateValue;
long priceValue;
// The benefit of using map is observed here, where you
// can find a particular date in O(log n) time complexity
auto it = dataMap.find(dateValue)
if (it != dataMap.end())
if (it->second == priceValue)
// Ignore this record
else
{
// Write this entry into another CSV file.
// You can later rename this to the original
// CSV file, which will give an impression that
// your duplicate entries have been removed
// from the original CSV file.
}