用vim解析csv文件

时间:2013-12-25 10:41:24

标签: csv vim

我有一个大型CSV文件,结构如下:

CHINESE        TRANSLATION
我去上学。       Wǒ qù shàngxué. I am going to school. 上 ♦ on, on top of ♦ go to
我去过北京。     Wǒ qùguò Běijīng. I've been to Beijing. 京 -- ♦ national capital ♦ Beijing
....

TRANSLATION列将三种不同的信息混合在一起:拼音,英文翻译和其他信息。这三种类型的信息始终存在,并始终以相同的方式呈现,并以点分隔。

我想要实现的是从TRANSLATION列创建三个不同的列,即获取:

CHINESE         PINYIN             TRANSLATION             ADDITIONAL
我去上学。       Wǒ qù shàngxué.    I am going to school.    上 ♦ on, on top of ♦ go to
....

使用vim宏,我该怎么做?

1 个答案:

答案 0 :(得分:1)

我认为vim宏可以处理这个工作,但是在一个大文件上执行几千次的vim宏非常慢。所以如果你只是想完成你的工作,我刚刚写了一个python脚本,我认为它可以给你你想要的东西。

import csv

# change 'in.csv' and 'out.csv' 
# to your exact file names.
with open('in.csv', 'r') as infile:
    with open('out.csv', 'w') as outfile:
        csvreader = csv.reader(infile)
        for a, b in csvreader:
            line = a + ',' + ','.join(b.split('.'))
            outfile.writelines(line)