我正在导入一个csv文件,其中包含逗号作为双引号括起来的字符串的一部分,如下所示:
a,b,c,d,e,f a,"b,c,d,e",f
为了获得正确的字段,我想首先改变每一行,所以我得到了所需的输出:
a,b,c,d,e,f a,"b;c;d;e",f
我先搜索过,但是我没有在Stack Overflow上找到任何其他东西,而且我很少在vbscript中工作。任何帮助表示赞赏。
编辑:编辑添加我用来完成此任务的代码
Sub csv2tab()
Const ForReading = 1
Const ForWriting = 2
Dim regex As Object
Set regex = CreateObject("VBScript.Regexp")
regex.IgnoreCase = True
regex.Global = True
regex.Pattern = """[^""]*""|[^,]*"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Users\venkat\Desktop\Freelancers\Upwork_tasks\Chris Hickey\Datafiles\smallerfile_11.csv", ForReading)
Do Until objFile.AtEndOfStream
strLine = objFile.ReadLine
strLine = Replace(strLine, regex.Replace(Line, ","), vbTab)
strNewText = strNewText & strLine & vbCrLf
Loop
objFile.Close
Set objFile = objFSO.OpenTextFile("C:\Users\venkat\Desktop\Freelancers\Upwork_tasks\Chris Hickey\Datafiles\test.txt", ForWriting)
objFile.WriteLine strNewText
objFile.Close
End Sub
在上面的代码中,我也试图将分隔符更改为tab,但对我来说不是强制性的。我想我用正则表达式搞砸了。
答案 0 :(得分:1)
体面 .CSV在每一行(和列标题)中具有相同的列数。所以你的样本数据应该是:
@Around("@annotation(DoProfile)")
使用.CSV的体面的工具可以自动处理特殊情况(例如引用字段中的分隔符):
@DoProfile
输出:
@DoProfile