是否有工具可以在CSV的所有元素周围添加双引号?

vcudknz3  于 11个月前  发布在  其他
关注(0)|答案(5)|浏览(149)

我有一个CSV文件,我想把它当作源代码。本质上,我想把CSV行当作是对一个函数的调用,所有的参数都是字符串。
问题是,当文本中有逗号时,单个元素才被双引号引用。
有没有一个快速的方法来添加双引号所有的元素在一个CSV行.
原始文档是一个Excel文件,所以Excel中的任何东西都可以,但其他快速工具也很受欢迎。

jrcvhitl

jrcvhitl1#

试试下面的Python脚本,只是为了好玩。
它将引号添加到CSV中还没有引号的字符串中。
这是一个非常简单的方法--你可能会发现一些不适合你的情况(带引号和逗号的字符串?)。
(oh,这可以用少得多的代码行来写,我知道。不是这里的重点)。

import sys
import re

def addQuotes( str ):
    matches = re.match( '^".*"$', str )
    if matches == None:
        return '"' + str + '"'
    return str

# Iterate over standard input. NOTE - this isn't line-buffered, don't try using
# this script interactively...
for line in sys.stdin:

    # Remove trailing linefeed.
    line = line.strip()

    # Split the line into parts separated by commas.
    parts = line.split( ',' )

    # Add quotes to each part that doesn't have quotes already.
    newParts = map( addQuotes, parts )

    # Concatenate the parts back to a single line.
    concatParts = ','.join( newParts )

    # And print it.
    print concatParts

字符串
将CSV文件传输到此,使用类似于-

python QuoteCSV.py < input.csv

mqkwyuun

mqkwyuun2#

看看Excel CONCATENATE()函数。它接受一个逗号分隔的字符串列表或引用的文字。

e.g. CONCATENATE("""", A1, """") etc.

字符串
其中A1是其中一列。
我经常对一次性的SQL插入这样做,所以在使用双引号的地方,我编写SQL插入语句

mum43rcc

mum43rcc3#

你能改变你的输出使用不同的字段分隔符吗?理想情况下,你可以使用一些永远不会在字段值中使用的东西-那么这就是一个简单的搜索和替换问题。
另一种选择是将CSV导入到SQL表中,然后将其转储回,并在所有字段周围加上引号。

cgyqldqp

cgyqldqp4#

如果你使用Excel,这个宏将做你想要的:

Option Explicit

Public Sub OutputQuotedCSV()
Const QSTR As String = """"
Dim myRecord As Range
Dim myField As Range
Dim vFilename As Variant
Dim nFileNum As Long
Dim sOut As String

'Get a filename to save as
vFilename = Application.GetSaveAsFilename(filefilter:="Microsoft CSV files,*.csv", _
Title:="Save as CSV with fields in double quotes")

If vFilename = False Then Exit Sub 'User chose Cancel

nFileNum = FreeFile
Open vFilename For Output As #nFileNum
For Each myRecord In Range("A1:A" & _
Range("A" & Rows.Count).End(xlUp).Row)
With myRecord
For Each myField In Range(.Cells(1), _
Cells(.Row, 256).End(xlToLeft))
sOut = sOut & "," & QSTR & _
Replace(myField.Text, QSTR, QSTR & QSTR) & QSTR
Next myField
Print #nFileNum, Mid(sOut, 2)
sOut = Empty
End With
Next myRecord
Close #nFileNum
End Sub

字符串
宏中的链接指向原始源

hkmswyz6

hkmswyz65#

Python 3脚本

import sys
import csv

csvwriter = csv.writer(sys.stdout, quoting=csv.QUOTE_ALL)
reader = csv.reader(sys.stdin, dialect='excel')
for row in reader:
    csvwriter.writerow(row)

字符串

相关问题