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
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
5条答案
按热度按时间jrcvhitl1#
试试下面的Python脚本,只是为了好玩。
它将引号添加到CSV中还没有引号的字符串中。
这是一个非常简单的方法--你可能会发现一些不适合你的情况(带引号和逗号的字符串?)。
(oh,这可以用少得多的代码行来写,我知道。不是这里的重点)。
字符串
将CSV文件传输到此,使用类似于-
型
mqkwyuun2#
看看Excel CONCATENATE()函数。它接受一个逗号分隔的字符串列表或引用的文字。
字符串
其中A1是其中一列。
我经常对一次性的SQL插入这样做,所以在使用双引号的地方,我编写SQL插入语句
mum43rcc3#
你能改变你的输出使用不同的字段分隔符吗?理想情况下,你可以使用一些永远不会在字段值中使用的东西-那么这就是一个简单的搜索和替换问题。
另一种选择是将CSV导入到SQL表中,然后将其转储回,并在所有字段周围加上引号。
cgyqldqp4#
如果你使用Excel,这个宏将做你想要的:
字符串
宏中的链接指向原始源
hkmswyz65#
Python 3脚本
字符串