首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -用另一个文件中的短代码动态替换长字段

Python -用另一个文件中的短代码动态替换长字段
EN

Stack Overflow用户
提问于 2020-12-23 04:50:58
回答 1查看 28关注 0票数 0

我有一个csv库存列表文件,我每天都会收到该文件,其中包含每个项目的多个字段。这些字段包括制造商产品编号(MPN)、制造商全名以及最新库存计数等详细信息。我还有一个单独的文件,它存储在不同的文件夹中,在那里我保存了每个制造商的记录和分配给他们的简短代码(2个字符) (AT代表Airthing,RG代表Ring等)。

我已经拼凑了下面的工作脚本(通过冲浪这些论坛),它采取原始股票文件,并创建一个新的文件,附加到每个记录的新字段-当前代表一些固定文本("ST-")加上制造商全名(csv的第5列)加上一些更固定的文本("-")加上MPN (csv的第1列)的串联。

不过,我希望将此字符串中的制造商全名替换为我在单独文件中与制造商关联的两个字符代码。这个是可能的吗?我如何修改下面的脚本才能做到这一点呢?

非常感谢。

S

代码语言:javascript
复制
 import csv

 with open('C:/Stores/stockfeed/Stockfeedi.csv','r') as csvinput:
 with open('C:/Stores/stockfeed/Stockfeedo.csv', 'w') as csvoutput:
    writer = csv.writer(csvoutput, quoting=csv.QUOTE_NONNUMERIC, lineterminator='\n')
    reader = csv.reader(csvinput)

    all = []
    row = next(reader)
    row.append('SKU')
    all.append(row)

    for row in reader:
        row.append("ST-" + row[4] + "-" + row[0])  #This is the line I need help with
        all.append(row)

    writer.writerows(all)

stockfeedi.csv示例

库存类别"SHA5209","Ener-J","7103356056844","60.00","Ener-J","0",“未知”,“家庭自动化”,"BW1001","ENER-J即时热水龙头“,"7103351516954","60.00","ENER-J”,"0",“未知”,“家庭自动化”,"Y28 EU",“卡米迷你固定室内摄像头EU","6970171176443","34.37",”卡米“,"0",”未知“,”视频捕获“"ENER010","Energenie -4刚射频扩展”,"5060166030117","21.24","Energenie","37",“可用”,"Energenie“"SHA5204",”智能WiFi 1刚触控开关“,"7061252103720","11.00","Ener-J","0",”未知“,“家庭自动化”,"CostcoPOS9",“环报警托盘”,"0000000000108",".00",“环”,"0",“未知”,“环”,"CostcoPOS10",“环”凸轮电池白二人组托盘POS","0000000000109",".00",“环”,"0",“未知”,“环”"L83",“光波智能继电器(3刚)”,"5060252202862","99.13",“光波”,"63","AIRTCH",“家庭自动化”,"Airthings Corentium Home","7090031102227","92.75","Airthings","47","Available",“家庭自动化”,"MIHO099",“小米家庭-带网关的智能恒温器”,"5060166038557","92.08","Energenie","1","Available","Energenie“"L2","Lightwave Link Plus","5060252202558","92.05","Lightwave","26","Available","Home Automation“

stockfeedo.csv示例(由上面的脚本生成)

"MPN",“显示名称/代码”,“通用个人计算机代码”,“价格”,“品牌”,“现货”,“可用”,“库存类别”,"SKU“,"SHA5209","ENER-J室外双人红外泛光灯黑色”,"7103356056844","60.00","Ener-J","0",“未知”,“家庭自动化”,"TD-Ener-J-SHA5209“"BW1001","ENER-J即时热水龙头”,"7103351516954","60.00","Ener-J","0",“未知",”家庭自动化“,"TD-Ener-J-BW1001”,"Y28 EU",“卡米迷你固定室内摄像头EU","6970171176443","34.37",”卡米“,"0",”未知“,”视频捕获“,"TD-Kami-Y28 EU”"ENER010","Energenie -4 Gang RF扩展“,"5060166030117","21.24","Energenie","37","Available","Energenie","TD-Energenie-ENER010“"SHA5204",”智能WiFi 1触控开关“,"7061252103720","11.00","Ener-J","0",”未知“,”家庭自动化“,"TD-Ener-J-SHA5204”,"CostcoPOS9",“环形报警托盘位置”,"0000000000108",".00",“环”,"0",“未知”,“环”,"0000000000109",".00",“环”,"0",“未知”,“环”,“TD-环-CostcoPOS10”,"L83",“光波智能继电器(3Gang)”,"5060252202862","99.13",“光波”,"63",“可用”,“家庭自动化”,"TD-Lightwave-L83“,"AIRTCH","Airthings Corentium Home","7090031102227","92.75","Airthings","47","Available",“家庭自动化”,"TD-Airthings-AIRTCH“"MIHO099","Mi家用-带网关的智能恒温器”,"5060166038557","92.08","Energenie","1","Available","Energenie","TD-Energenie-MIHO099“"L2","Lightwave Link Plus","5060252202558","92.05","Lightwave","26","Available","Home Automation","TD-Lightwave-L2“

单独代码csv文件的示例

制造商,Code Ener-J,EJ Kami,KM Energenie,EG RING,RG Lightwave,LW Airthing,AT LIFX,LF

我希望stockfeedo.csv成为什么样的例子

"MPN",“显示名称/代码”,“通用个人计算机代码”,“价格”,“品牌”,“现货”,“可用”,“库存类别”,"SKU“,"SHA5209","ENER-J室外双人红外泛光灯黑色”,"7103356056844","Ener-J","0",“未知”,“家庭自动化”,"TD-EJ-SHA5209“,"BW1001","ENER-J即时热水龙头”,"7103351516954","6970171176443","Ener-J","0",“未知",”家庭自动化“,"TD-EJ-BW1001”,"Y28 EU",“卡米迷你固定室内摄像头EU",”6970171176443“,"34.37",”卡米“,"0",”未知“,”视频捕获“,”TD-KM-Y28EU“,"ENER010","Energenie -4Gang RF扩展”,"5060166030117","21.24","Energenie","37","Available","Energenie","TD-EJ-ENER010“,"SHA5204",”智能WiFi 1触控开关“,"7061252103720","11.00","Ener-J","0",”未知“,”家庭自动化“,"TD-EJ-SHA5204”,"CostcoPOS9",“环形报警托盘位置”,"0000000000108",".00",“环”,"0",“未知”,“环”,"TD-RG-CostcoPOS9“"CostcoPOS10",”环形凸轮电池白二人组托盘位置“,"0000000000109",".00",”环形“,"0",”未知“,”环形“,"TD-RG-CostcoPOS10”"L83",“光波智能继电器(3 Gang)","5060252202862","99.13",”光波“,"63",”可用“,”家庭自动化“,"TD-LW-L83”,"AIRTCH","Airthings Corentium Home","7090031102227","92.75","Airthings","47","Available",“家庭自动化”,"TD-AT-AIRTCH“"MIHO099",”小米家庭-带网关的智能恒温器“,"5060166038557","92.08","Energenie","1","Available","EJ","TD-Energenie-MIHO099”"L2","Lightwave Link Plus","5060252202558","92.05","Lightwave","26","Available","Home Automation","TD-LW-L2“

EN

回答 1

Stack Overflow用户

发布于 2020-12-23 04:54:57

最快的方法是将主数据文件读入Pandas DataFrame,将引用文件读入字典,然后调用DataFrame的制造商列的.replace()方法,并将dict作为参数传递。这将在列中查找dict的键,并用dict中的相应值替换它们。假设在两个文件中都有匹配的项目,即在库存列表中您有制造商的名称,并且相同的名称出现在引用文件中的某处,则此方法有效。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65415666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档