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

如何将字典逐行格式写入文本文件,替换原始文本

如何将字典逐行格式写入文本文件,替换原始文本

千万里不及你 2023-06-27 16:44:26
我是编程新手。我目前有如下字典,我想将其写入文本文件(以行分隔)以替换文本文件中的原始内容。我更改了一些值并添加了新键,并且想知道如何去做。下面是我想用其替换原始文本文件的字典:cars={'Honda\n':['10/11/2020\n','red\n','firm and sturdy\n''breaks down occasionally\n'],'Toyota\n':['20/12/2005\n','indigo\n''big and spacious\n', 'fuel saving\n'],'Maserati\n':['10/10/2009\n','silver\n','fast and furious\n','expensive to maintain\n'],'Hyundai\n':['20/10/2000\n','gold\n','solid and reliable\n','slow acceleration\n'] 原始文件:Honda10/11/2010bluestrong and sturdybreaks down occasionallyToyota20/15/2005indigobig and spaciousMaserati10/10/2009silverfast and furiousexpensive to maintainaccident prone所需文件:Honda10/11/2020redfirm and sturdybreaks down occasionallyToyota20/12/2005indigobig and spaciousfuel-savingMaserati10/10/2009silverfast and furiousexpensive to maintainHyundai20/10/2000goldsolid and reliableslow acceleration这是我所做的:with open('cars.txt', 'w') as f:f.write(str(cars))f.close()但它只打印字典而不是所需的文件。我可以知道该怎么做吗?
查看完整描述

5 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

您不能只转储字典,因为就该write方法而言,您正在尝试转储内存位置。


您需要像这样检查每个字典键和项目。您也不需要关闭文件,因为当您离开循环时,with open它会自行关闭。


with open('cars.txt', 'w') as f:

    for car, vals in cars.items:

        f.write(car)

        for val in values:

            f.write(val)


注意: 我还没有测试过这些。


查看完整回答
反对 回复 2023-06-27
?
喵喔喔

TA贡献1735条经验 获得超5个赞

首先使用分隔符分割原始文件数据'\n\n'。然后使用字典访问新数据。然后将结果写入新文件。


with open('cars.txt') as fp, open('new_cars.txt', 'w') as fw:

    for car in fp.read().split('\n\n'):

        car_name = car.split('\n', 1)[0] + '\n'

        fw.write(car_name + ''.join(cars[car_name]) + '\n')


查看完整回答
反对 回复 2023-06-27
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

根据您的调试错误,您应该只将dict转换为str像这样


with open('cars.txt', 'w') as f:      

f.write(str(cars)) 

f.close()


查看完整回答
反对 回复 2023-06-27
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

在你的 write 语句中,你可以简单地这样做:

f.write('\n'.join(car + ''.join(cars[car]) for car in cars))


查看完整回答
反对 回复 2023-06-27
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

这里有多个问题:

  • 该错误的意思就是它所说的——你不能将 a 写入dict文件。

    • 要解决这个问题,只需将 转换dict为 a str,如下所示:dict_as_str = str(dict),然后f.write(dict_as_str)

  • 一旦你解决了这个问题,看看你拥有什么:你可能不会看到你想要的。这是因为以f.write相同的方式转换它print,所以如果你运行print(dict_as_str),它基本上看起来像一个字典。

    • 要解决这个问题,您必须执行不止一行代码。我不会给你代码,你需要自己尝试弄清楚。如果您尝试但无法使其正常工作,那么您可以发布另一个问题。


查看完整回答
反对 回复 2023-06-27
  • 5 回答
  • 0 关注
  • 132 浏览
慕课专栏
更多

添加回答

举报

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