将字符串更改为特定整数,同时从 x.dat 解析为 x.csv?

  • 本文关键字:dat csv 字符串 整数 python
  • 更新时间 :
  • 英文 :


我在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)+',')

最新更新