用双引号

时间:2017-05-25 18:18:11

标签: csv vbscript

我正在导入一个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,但对我来说不是强制性的。我想我用正则表达式搞砸了。

1 个答案:

答案 0 :(得分:1)

体面 .CSV在每一行(和列标题)中具有相同的列数。所以你的样本数据应该是:

@Around("@annotation(DoProfile)")

使用.CSV的体面的工具可以自动处理特殊情况(例如引用字段中的分隔符):

@DoProfile

输出:

@DoProfile