我在這個格式的文本文件:如何將製表符分隔的文件轉換爲CSV格式?
{
attribute1 attribute2 attribute3.... attributeN
value"A" value"B" value"C".... value"Z"
/* next line of values*/
}
每個字由製表符分隔。
如何轉換爲CSV格式?我嘗試使用Excel,但它給兼容性問題。
我在這個格式的文本文件:如何將製表符分隔的文件轉換爲CSV格式?
{
attribute1 attribute2 attribute3.... attributeN
value"A" value"B" value"C".... value"Z"
/* next line of values*/
}
每個字由製表符分隔。
如何轉換爲CSV格式?我嘗試使用Excel,但它給兼容性問題。
用excel導入數據(數據>從文本文件加載),使用選項卡作爲列分隔符。然後將該文件保存爲csv。
它不具有兼容性問題,這是一項基本任務,我過去經常這樣做。
如果你可以使用一個scripting language,你可能會給Python一個鏡頭:
import csv
# read tab-delimited file
with open('yourfile.tsv','rb') as fin:
cr = csv.reader(fin, delimiter='\t')
filecontents = [line for line in cr]
# write comma-delimited file (comma is the default delimiter)
with open('yourfile.csv','wb') as fou:
cw = csv.writer(fou, quotechar='', quoting=csv.QUOTE_NONE)
cw.writerows(filecontents)
舉例解釋對話:
>>> import csv
>>> with open('yourfile.tsv','rb') as fin:
... cr = csv.reader(fin, delimiter='\t')
... filecontents = [line for line in cr]
...
>>> with open('yourfile.csv','wb') as fou:
... cw = csv.writer(fou, quotechar='', quoting=csv.QUOTE_NONE)
... cw.writerows(filecontents)
...
>>> with open('yourfile.csv','rb') as see_how_it_turned_out:
... for line in see_how_it_turned_out:
... line
...
'attribute1,attribute2,attribute3,attributeN\r\n'
'value"A",value"B",value"C",value"Z"\r\n'
注:
的default line terminator爲csv.writer
是\r\n
,但你應該有需要的話可以指定一個替代作爲關鍵字參數AKA kwarg。
替代線路終端器例如:
with open('yourfile.csv','wb') as fou:
cw = csv.writer(fou,quotechar='',quoting=csv.QUOTE_NONE,lineterminator='\n')
...
下面是一些Excel的VBA代碼,會做這種轉換。將其粘貼到Excel的可視化基本編輯器(Alt-F11
)中並運行它(當然,在調整文件名後)。
Sub TabToCsv()
Const ForReading = 1, ForWriting = 2
Dim fso, MyTabFile, MyCsvFile, FileName
Dim strFileContent as String
Set fso = CreateObject("Scripting.FileSystemObject")
' Open the file for input.
Set MyTabFile = fso.OpenTextFile("c:\testfile.dat", ForReading)
' Read the entire file and close.
strFileContent = MyTabFile.ReadAll
MyTabFile.Close
' Replace tabs with commas.
strFileContent = Replace(expression:=strFileContent, _
Find:=vbTab, Replace:=",")
' Can use Chr(9) instead of vbTab.
' Open a new file for output, write everything, and close.
Set MyCsvFile = fso.OpenTextFile("c:\testfile.csv", ForWriting, True)
MyCsvFile.Write strFileContent
MyCsvFile.Close
End Sub
@jfc:它也應該刪除空行和{ } – 2011-09-07 07:59:08
爲什麼?不一定。取決於OP的需求。我的代碼按照要求輸出一個「CSV格式」的文件,但[「CSV」真的意味着只有一個東西](http://en.wikipedia.org/wiki/)。逗號分隔值):值之間用逗號(通常)和換行符分開,我不能預先判斷OP是否需要收件人應用程序中的'{'和'}'和空行。的期望輸出,那麼我們將有機會正確回答。 – 2011-09-07 08:19:18
請注意,CSV不是一個非常明確的格式。有些使用「;」作爲分隔符,有些使用「,」。日期格式也是非常可變的,並且可以選擇使用或不使用字符串來分隔字符串,您應該向客戶(個人或流程)闡明這些要求 – 2011-09-07 08:02:36