我有一个JSON,它包含了很多数据,其中包括多个ID。每个ID都包含数字和字母。每个ID都是唯一的。
"Id": "3L2kVk023"
"Id": "156228427"
我的应用程序不再接受带字母的ID,所以我需要将它们全部改为数字,并且每个ID必须是唯一的。在记事本++中有没有自动的方法来做这件事?我发现很难为它写正则表达式,因为所有的ID都是唯一的,必须一个接一个地替换。
vyswwuz21#
这不能用Notepad中的普通正则表达式替换来实现。在Notepad中实现这一点的最佳方法是使用PythonScript插件。如果尚未安装,请访问此链接:Guide: How to install the PythonScript plugin on Notepad++使用以下代码从记事本++主菜单(插件〉〉PythonScript〉〉新建脚本)创建脚本并保存文件(例如replace-random.py)
replace-random.py
import re import random import hashlib def calculate(match): # copy match (only for better understanding) IdFound = match.group(0) # make sure passing an encoded string IdNew = int(hashlib.sha256(IdFound.encode('utf-8')).hexdigest(), 16) % 10**9 # format return string return '"Id": "' + str(IdNew) + '",' editor.rereplace(r'"Id": "[A-Za-z0-9]+",', calculate)
假设要处理以下JSON记录(注意:第一个和最后一个ID相同)。
{ "Order ID": 4984, "Parts group": "INTERIO", "Id": "3K2kVk023", "Order description": "justo. Nullam" }, { "Order ID": 1925, "Parts group": "ELECTRA", "Id": "3L2kWk024", "Order description": "imperdiet" }, { "Order ID": 8651, "Parts group": "INTERIO", "Id": "3K2kVk023", "Order description": "eu pede mollis" }
这导致:
1条答案
按热度按时间vyswwuz21#
这不能用Notepad中的普通正则表达式替换来实现。在Notepad中实现这一点的最佳方法是使用PythonScript插件。
如果尚未安装,请访问此链接:Guide: How to install the PythonScript plugin on Notepad++
使用以下代码从记事本++主菜单(插件〉〉PythonScript〉〉新建脚本)创建脚本并保存文件(例如
replace-random.py
)假设要处理以下JSON记录(注意:第一个和最后一个ID相同)。
这导致: