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

循环遍历字典以替换文本文件中的多个值

循环遍历字典以替换文本文件中的多个值

暮色呼如 2023-04-18 16:44:58
我正在尝试更改文本文件中的几个十六进制值。我制作了一个 CSV,其中一列包含原始值,另一列包含新值。我的目标是编写一个简单的 Python 脚本,根据第一列在文本文件中查找旧值,并在第二列中用新值替换它们。我正在尝试使用字典来促进replace()我通过循环 CSV 创建的字典。构建它非常容易,但是使用它来执行一个任务replace()还没有成功。当我在脚本运行后打印出这些值时,我仍然看到原始值。我试过read()像上面那样使用和执行对整个文件的更改来读取文本文件。import csvfilename = "origin.txt"csv_file = 'replacements.csv'conversion_dict = {}# Create conversion dictionarywith open(csv_file, "r") as replace:    reader = csv.reader(replace, delimiter=',')    for rows in reader:        conversion_dict.update({rows[0]:rows[1]})#Replace values on text files based on conversion dictwith open(filename, "r") as fileobject:    txt = str(fileobject.read())    for keys, values, in conversion_dict.items():        new_text = txt.replace(keys, values)我还尝试将更新后的文本添加到列表中:#Replace values on text files based on conversion dictwith open(filename, "r") as fileobject:    txt = str(fileobject.read())    for keys, values, in conversion_dict.items():        new_text.append(txt.replace(keys, values))然后,我尝试readlines()一次一行地用新值替换旧值:# Replace values on text files based on conversion dictwith open(filename, "r") as reader:    reader.readlines()    type(reader)    for line in reader:        print(line)        for keys, values, in conversion_dict.items():            new_text.append(txt.replace(keys, values))在进行故障排除时,我运行了一个测试,看看我的字典中的键和文件中的文本是否匹配:for keys, values, in conversion_dict.items():    if keys in txt:        print("match")    else:        print("no match")match除了第一行,我的输出在每一行都返回。我想通过一些修剪或其他东西我可以解决这个问题。但是,这证明存在匹配项,因此我的代码一定存在其他问题。任何帮助表示赞赏。
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

来源.txt:


oldVal9000,oldVal1,oldVal2,oldVal3,oldVal69


测试.csv:


oldVal1,newVal1

oldVal2,newVal2

oldVal3,newVal3

oldVal4,newVal4

import csv


filename = "origin.txt"

csv_file = 'test.csv'

conversion_dict = {}


with open(csv_file, "r") as replace:

    reader = csv.reader(replace, delimiter=',')

    for rows in reader:

        conversion_dict.update({rows[0]:rows[1]})


f = open(filename,'r')

txt = str(f.read())

f.close()


txt= txt.split(',')         #not sure what your origin.txt actually looks like, assuming comma seperated values

for i in range(len(txt)):

    if txt[i] in conversion_dict:

        txt[i] = conversion_dict[txt[i]]

        

with open(filename, "w") as outfile:

    outfile.write(",".join(txt))

修改后的origin.txt:


oldVal9000,newVal4,newVal1,newVal3,oldVal69


查看完整回答
反对 回复 2023-04-18
  • 1 回答
  • 0 关注
  • 103 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信