gpt4 book ai didi

python - csv中的字符串替换

转载 作者:太空宇宙 更新时间:2023-11-03 15:01:26 26 4
gpt4 key购买 nike

下面,我正在尝试替换 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])

最佳答案

当您调用 s.replace (stocklevel ,newlevel) 时,stocklevel 的所有出现都被替换为 newlevel 的值。

string.replace(s, old, new[, maxreplace]): Return a copy of string s with all occurrences of substring old replaced by new. If the optional argument maxreplace is given, the first maxreplace occurrences are replaced.

source

正如您所建议的,您需要获取代码并用它来代替库存水平。

这是一个示例脚本,它将 8 位代码和新库存水平作为命令行参数并替换它:

import sys
import re
code = sys.argv[1]
newval= int(sys.argv[2])
f=open("stockcontrol.csv")
data=f.readlines()
print data
for i,line in enumerate(data):
if re.search('%s,\d+'%code,line): # search for the line with 8-digit code
data[i] = '%s,%d\n'%(code,newval) # replace the stock value with new value in the same line
f.close()

f=open("in.csv","w")
f.write("".join(data))
print data
f.close()

另一种使用 csv 的解决方案Python模块:

import sys
import csv

data=[]
code = sys.argv[1]
newval= int(sys.argv[2])
f=open("stockcontrol.csv")
reader=csv.DictReader(f,fieldnames=['code','level'])
for line in reader:
if line['code'] == code:
line['level']= newval
data.append('%s,%s'%(line['code'],line['level']))
f.close()

f=open("stockcontrol.csv","w")
f.write("\n".join(data))
f.close()

警告:在尝试这些脚本覆盖输入文件时,请备份输入文件。

如果您将脚本保存在一个名为 test.py 的文件中,然后将其调用为:

python test.py 34512340 10

这应该将代码 34512340 的库存值替换为 10。

关于python - csv中的字符串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37508418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com