我有一个大型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宏,我该怎么做?
答案 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)