我正在寻找一个可以从csv文件一次解析一行的正则表达式。基本上,string.readline()的作用是什么,但如果它们在双引号内,它将允许换行。
或者有更简单的方法吗?
答案 0 :(得分:5)
使用正则表达式来解析CSV对于控制良好的CSV数据中的简单应用程序来说很合适,但通常有很多陷阱,例如转义嵌入式引号和引用字符串中的逗号< / strong>等等。这通常会使正则表达式变得棘手且风险很大。
我建议您使用经过充分测试的CSV模块。
- 编辑: - 请参阅此优秀文章Stop Rolling Your Own CSV Parser!
答案 1 :(得分:1)
FileHelpers 库非常适用于此目的。
答案 2 :(得分:0)
使用.NET框架的内置功能,而不是依赖容易出错的正则表达式,而不是简单的“拆分”逻辑或第三方组件,
Using Reader As New Microsoft.VisualBasic.FileIO.TextFieldParser("C:\MyFile.csv")
Reader.TextFieldType = Microsoft.VisualBasic.FileIO.FieldType.Delimited
Dim MyDelimeters(0 To 0) As String
Reader.HasFieldsEnclosedInQuotes = False
Reader.SetDelimiters(","c)
Dim currentRow As String()
While Not Reader.EndOfData
Try
currentRow = Reader.ReadFields()
Dim currentField As String
For Each currentField In currentRow
MsgBox(currentField)
Next
Catch ex As Microsoft.VisualBasic.FileIO.MalformedLineException
MsgBox("Line " & ex.Message &
"is not valid and will be skipped.")
End Try
End While
End Using