我在x.dat中有数据,如下所示:
1::F::1::10::48067
2::M::56::16::70072
3::M::25::15::55117
我想转换为 x.csv将 M 转换为 1,将 F 转换为 2,因此 csv 中的新结果是:
1,2,1,10,48067
2,1,56,16,70072
3,1,25,15,55117
如何在Python中做到这一点?
使用replace
函数:
with open("x.csv", "w") as fw:
with open("x.dat", "r") as fr:
for line in fr:
new_line = line.replace("::", ",").replace("F", "2").replace("M", "1")
fw.write(new_line)
使用re
模块:
import re
rep = {
"F": "2",
"M": "1",
"::": ",",
}
rep = dict((re.escape(k), v) for k, v in rep.iteritems())
pattern = re.compile("|".join(rep.keys()))
with open("x.csv", "w") as fw:
with open("x.dat", "r") as fr:
for line in fr:
new_line = pattern.sub(lambda m: rep[re.escape(m.group(0))], line)
fw.write(new_line)
这应该有效:
with open("x.dat") as f:
with open("x.csv", "w") as f1:
for line in f:
m= line.split("::")
if(m[1]=='M'):
m[1]=1
else:
m[1]=2
for ele in m:
f1.write(str(ele)+',')