下面,我试图替换csv中的数据。代码可以工作,但它会替换文件中任何匹配的stocklevel
。
def updatestocklevel(quantity, stocklevel, code):
newlevel = stocklevel - quantity
stocklevel = str(stocklevel)
newlevel = str(newlevel)
s = open("stockcontrol.csv").read()
s = s.replace (stocklevel ,newlevel) #be careful - will currently replace any number in the file matching stock level!
f = open("stockcontrol.csv", 'w')
f.write(s)
f.close()
我的csv是这样的
34512340,1
12395675,2
56756777,1
90673412,2
12568673,3
22593672,5
65593691,4
98593217,2
98693214,2
98693399,5
11813651,85
98456390,8
98555567,3
98555550,45
98553655,2
96553657,1
91823656,2
99823658,2
在程序的其他地方,我有一个搜索代码的函数(8位)
如果code
在csv行中,是否可以替换第二列中的数据?(数据[2])
因为它是csv文件,我建议使用Python的
csv
模块。您将需要写入一个新文件,因为读取和写入同一个文件将变得不好。你可以在以后重新命名它。本例使用
StringIO
(Python 2)将csv数据嵌入到代码中并将其视为文件。通常你会打开一个文件来获取输入。已更新
当您调用
s.replace (stocklevel ,newlevel)
时,stocklevel
的所有发生都将替换为newlevel
的值。source
正如您所建议的,您需要获得
code
,并使用它替换库存水平。这是一个示例脚本,它以8位代码和新的stock level作为命令行参数并替换它:
使用Python的csv模块的另一个解决方案:
警告:在尝试这些脚本覆盖输入文件时备份输入文件。
如果将脚本保存在名为
test.py
的文件中,则将其调用为:python test.py 34512340 10
。这将替换代码34512340到10的stockvalue。
为什么不使用好的旧正则表达式呢?
相关问题 更多 >
编程相关推荐