2016-07-13 29 views
0

我有一個具有以下格式的csv文件。目前,這是所有在一個字符串使用腳本將「文本添加到列」

Column 1 
Frame 0 adm2_score:0.957 
Frame 1 dm2_score:0.942 
Frame 2 _adm2_score:0.935 
Frame 3 _adm2_score:0.940 
Frame 4 _adm2_score:0.927 
Frame 5 _adm2_score:0.925 

但是我使用情況下,我想在字符串分出一部分「:」像這樣

Column 1       Column 2 
Frame 0 _adm2_score: 0.957 
Frame 1 _adm2_score: 0.942 
Frame 2 _adm2_score: 0.935 
Frame 3 _adm2_score: 0.940 
Frame 4 _adm2_score: 0.927 
Frame 5 _adm2_score: 0.925 

到一個單獨的列是我有辦法可以使用腳本(最好是Python腳本)而不是手動執行此操作。任何幫助將不勝感激 。 (注意:我知道你可以手動執行此操作在Excel中,但我想用一個腳本作爲數據集是相當大的做。)

+1

假設你想要製表符分隔,'sed -i's /:/:\ t /'file'就可以正常工作。 –

+0

你當然可以用VBA做到這一點。我喜歡的一個技巧是使用「記錄宏」函數,使用內置函數(文本到列中的文本),然後查看它生成的vba腳本。通常你可以弄清楚如何從那裏編輯它來做你需要的一切。 – ericksonla

+0

我對VBA沒有經驗可以提供一個我可以參考的鏈接開始,謝謝 –

回答

0

可以使用split()功能來劃分它,你想

for line in file: 
    list = line.split(":") ##turns into list at split at colon 
    print list[0], ": ", list[1] 

或類似的東西,很容易得到你想要的東西

1

只需要替換:\ t使用python。簡單獨立的演示:

z="""Frame 0 VMAF_feature_adm2_score:0.957 
Frame 1 VMAF_feature_adm2_score:0.942 
Frame 2 VMAF_feature_adm2_score:0.935 
Frame 3 VMAF_feature_adm2_score:0.940 
Frame 4 VMAF_feature_adm2_score:0.927 
Frame 5 VMAF_feature_adm2_score:0.925""".splitlines() 

for l in z: 
    print(l.replace(":",":\t")) 

可以讀取該文件,並把數據z

z = open("input.txt","rb").read().splitlines() 
0

對於誰是困惑,如何將此這裏的任何一個是一個方法,我發現使用python腳本

import csv, sys 
z = open("output.csv","rb").read().splitlines() 
for l in z: 
    print(l.replace(":",",")) 

後,在命令行直接運行這個

test.py > new.csv