亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 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 關注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號