【问题标题】:How to bypass comma , double quote using Lumenworks如何使用 Lumenworks 绕过逗号、双引号
【发布时间】:2015-09-21 18:09:57
【问题描述】:

我正在从 csv 格式的数据库中获取数据。即http://iapp250.dev.sx.com:5011/a.csv?select[>date]from employee

但是表中的某些列包含逗号和双引号,并且在读取 csv 后它变成了逗号分隔的字符串。因此,当我反序列化它时,我得到了索引超出范围的异常。

我在阅读了一些帖子后决定使用 Lumenworks csv reader。我按照以下方式进行但仍然无法修复它。请找到以下代码 sn-p。

List<List<string>> LineFields = new List<List<string>>();
using(var reader = new StreamReader(siteminderresponse.getResponseStream())
{
 Char quotingCharacter = '\0'; 
        Char escapeCharacter = quotingCharacter;
        Char delimiter = '|';
        using (var csv = new CsvReader(reader, true, delimiter, quotingCharacter, escapeCharacter, '\0', ValueTrimmingOptions.All))
        {
            csv.DefaultParseErrorAction = ParseErrorAction.ThrowException;
            //csv.ParseError += csv_ParseError;  
            csv.SkipEmptyLines = true;

            while (csv.ReadNextRecord())
            {
                List<string> fields = new List<string>(csv.FieldCount);
                for (int i = 0; i < csv.FieldCount; i++)
                {
                    try
                    {
                        string field = csv[i];
                        fields.Add(field.Trim('"'));
                    } catch (MalformedCsvException ex)
                    {
                                                throw;
                    }
                }
 LineFields Add(fields);
            }
        }

}

最终结果是我得到逗号分隔的字段,例如

1,16:00:01,BUY,-2,***ROBERTS, K***.

请查看 ROBERTS, K,它是单列值,现在用逗号分隔,因此我的序列化失败。

【问题讨论】:

    标签: c# csv lumenworks


    【解决方案1】:

    这似乎是您格式化查询结果的方式存在问题。如果您希望 CSV 阅读器将“ROBERTS, K”作为单个字段读取,则需要在 CSV 阅读器的输入中为“ROBERTS, K”加上引号。 LumenWorks 只做它应该做的。

    同样,如果您想在解析的字段中使用文字双引号,则需要使用另一个双引号将它们转义。因此,要将其正确地表达为单个字段:

    Roberts, K is 6" taller than I am

    ...您需要将其传递给 CSV 解析器:

    "Roberts, K is 6"" taller than I am"

    【讨论】:

      猜你喜欢
      • 2016-05-31
      • 1970-01-01
      • 1970-01-01
      • 2013-04-02
      • 2019-05-11
      • 2020-06-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-19
      相关资源
      最近更新 更多