为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

沧海一幻觉 2021-06-10 08:01:45
我在 x.dat 中有如下数据:1::F::1::10::480672::M::56::16::700723::M::25::15::55117我想通过将M转换为1和F转换为2来转换为x.csv,因此csv中的新结果是:1,2,1,10,480672,1,56,16,700723,1,25,15,55117如何在 Python 中做到这一点?
查看完整描述

2 回答

?
芜湖不芜

TA贡献1796条经验 获得超7个赞

使用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)


查看完整回答
反对 回复 2021-06-22
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

这应该有效:


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


查看完整回答
反对 回复 2021-06-22
  • 2 回答
  • 0 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号