为了账号安全,请及时绑定邮箱和手机立即绑定

在.NET中解析定界CSV

在.NET中解析定界CSV

炎炎设计 2019-09-24 16:03:08
我有一个以逗号分隔的格式的文本文件,"在大多数字段上都用分隔。我试图将其纳入我可以枚举的内容(例如,通用集合)。我无法控制文件的输出方式,也无法控制定界符使用的字符。在这种情况下,这些字段用逗号分隔,而文本字段则用"标记括起来。我"遇到的问题是某些字段中有引号(即8 托盘),并且不小心将其作为下一个字段。对于数字字段,它们周围没有引号,但它们确实以+或-号开头(表示正数/负数)。我当时在想RegEx,但是我的技能不是很好,所以希望有人能提出一些我可以尝试的想法。该文件中大约有19,000条记录,因此我正在尝试尽可能高效地进行记录。以下是几个示例数据行:"00","000000112260   ","Pie Pumpkin                             ","RET","6.99 ","     ","ea ",+0000000006.99000"00","000000304078   ","Pie Apple caramel                       ","RET","9.99 ","     ","ea ",+0000000009.99000"00","StringValue here","8" Tray of Food                             ","RET","6.99 ","     ","ea ",-00000000005.3200还有更多字段,但是您可以获取图片。我正在使用VB.NET,并且具有通用的列表设置来接受数据。我尝试使用CSVReader,在您击中第3条记录(在文本字段中带有引号)之前,它似乎工作良好。如果我能以某种方式使其处理附加报价,那么CSVReader选项将非常有用。谢谢!
查看完整描述

3 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

从这里:


Encoding fileEncoding = GetFileEncoding(csvFile);

// get rid of all doublequotes except those used as field delimiters

string fileContents = File.ReadAllText(csvFile, fileEncoding);

string fixedContents = Regex.Replace(fileContents, @"([^\^,\r\n])""([^$,\r\n])", @"$1$2");

using (CsvReader csv =

       new CsvReader(new StringReader(fixedContents), true))

{

       // ... parse the CSV


查看完整回答
反对 回复 2019-09-24
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

我建议查看.Net 中的TextFieldParserClass。您需要包括


Imports Microsoft.VisualBasic.FileIO.TextFieldParser

这是一个简单的示例:


        Dim afile As FileIO.TextFieldParser = New FileIO.TextFieldParser(FileName)

        Dim CurrentRecord As String() ' this array will hold each line of data

        afile.TextFieldType = FileIO.FieldType.Delimited

        afile.Delimiters = New String() {","}

        afile.HasFieldsEnclosedInQuotes = True


        ' parse the actual file

        Do While Not afile.EndOfData

            Try

                CurrentRecord = afile.ReadFields

            Catch ex As FileIO.MalformedLineException

                Stop

            End Try

        Loop


查看完整回答
反对 回复 2019-09-24
  • 3 回答
  • 0 关注
  • 387 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信