我可以在Python中用JSON键替换部分字符串吗?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了我可以在Python中用JSON键替换部分字符串吗?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1972字,纯文字阅读大概需要3分钟。
内容图文
![我可以在Python中用JSON键替换部分字符串吗?](/upload/InfoBanner/zyjiaocheng/734/f74de020486d4feda670e6d14e3ebae0.jpg)
这是我的第一个问题,我是python的新手,并试图找出一些东西来建立一个自动3D模型处理链,它依赖于存储在从一个服务器移动到另一个服务器的JSON文件中的数据.
问题是我需要存储正在处理的文件的绝对路径,但是这些绝对路径应该在第一次处理它们时在原始JSON文件中进行修改.
基本上JSON文件是这样的:
{
"normaldir": "D:\\Outgoing\\1621_1\\",
"projectdir": "D:\\Outgoing\\1622_2\\"
}
我想重命名文件路径
{
"normaldir": "X:\\Incoming\\1621_1\\",
"projectdir": "X:\\Incoming\\1622_2\\",
}
我一直在尝试使用此代码替换路径的第一部分,但它不起作用:
def processscan(scanfile):
configfile= MonitorDirectory + scanfile
with open(configfile, 'r+') as file:
content = file.read()
file.seek(0)
content.replace("D:\\Outgoing\\", "X:\\Incoming\\")
file.write(content)
但是这根本不起作用,所以我尝试正确解释JSON文件并替换here中的密钥代码:
def processscan(scanfile):
configfile= MonitorDirectory + scanfile
with open(configfile, 'r+') as settingsData:
settings = json.load(settingsData)
settings['normaldir'] = 'X:\\Incoming\\1621_1\\'
settings['projectdir'] = 'X:\\Incoming\\1622_2\\'
settingsData.seek(0) # rewind to beginning of file
settingsData.write(json.dumps(settings,indent=2,sort_keys=True)) #write the updated version
settingsData.truncate() #truncate the remainder of the data in the file
这非常有效,但是我正在替换整个路径,因此它不适用于我需要处理的每个JSON文件.我真正想做的是采用对应于文件路径的JSON密钥,保留最后8个字符并用新字符串替换补丁的其余部分,但我无法弄清楚如何使用json python,据我所知,我无法编辑部分密钥.
有人有解决方法吗?
谢谢!
解决方法:
由于您需要将内容重新分配给新字符串,因此替换逻辑失败,str.replace不是就地操作,它会创建一个新字符串:
content = content.replace("D:\\Outgoing\\", "X:\\Incoming\\")
使用json方法只需使用当前值进行替换:
settings['normaldir'] = settings['normaldir'].replace("D:\\Outgoing\\", "X:\\Incoming\\")
如果你真的想保留最后8个字符并添加一个字符串,你还需要在写入之前使用truncate(),或者只是用w重新打开文件并转储/写入新值.
settings['normaldir'] = "X:\\Incoming\\" + settings['normaldir'][-8:]
内容总结
以上是互联网集市为您收集整理的我可以在Python中用JSON键替换部分字符串吗?全部内容,希望文章能够帮你解决我可以在Python中用JSON键替换部分字符串吗?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。