python - 正则表达式替换无法在 Python 中用正则表达式变量替换
问题描述
我们有大量文件需要转换为 json 这里是一个文件的示例数据
{
1=2,
4=tt,
6=9
}
{
1=gg,
2=bd,
6=bb
}
我正在使用 python 来转换正则表达式工作正常的数据,但是当我在 python 代码中实现时,相同的正则表达式不起作用这里是代码
import numpy as np
f = open('/Users/rahulvarma/Downloads/2020120911.txt', 'r')
content = f.read()
import re
regex = r"([0-9]+)(=)((.*)+)"
subst = "\"$1\":\"$3\","
result = re.sub(regex, subst, content, 0, re.MULTILINE)
if result:
print (result)
但我是
{
"$1":"$3",
"$1":"$3",
"$1":"$3"
}
{
"$1":"$3",
"$1":"$3",
"$1":"$3"
}
我的预期输出应该是
{
"1":"2",
"4":"tt",
"6":"9"
}
{
"1":"gg",
"2":"bd",
"6":"bb"
}
解决方案
您可以使用此正则表达式进行搜索:
(\d+)=([^,\n]*)(,|$)
并替换使用:
"\1":"\2"\3
代码:
regex = r"(\d+)=([^,\n]*)(,|$)"
result = re.sub(regex, r'"\1":"\2"\3', input_str, 0, re.MULTILINE)
正则表达式详细信息:
(\d+)
: 匹配捕获组 #1 中的 1+ 个数字=
: 匹配=
字符([^,\n]*)
,
: 匹配 0 个或多个不在\n
捕获组 #2 中的字符(,|$)
: 在捕获的组 #3 中匹配逗号或行尾
推荐阅读
- facebook - 在从原始来源再次请求之前,谷歌图像代理存储缓存的图像多长时间?
- mysql - SQL:如果行数超过 2,则删除只有 1 行数的行,然后不删除它
- c++ - 在特定时间预约一天的程序(不使用数组)C++
- javascript - 检测字符串结构的正则表达式
- php - 在 Siteground 共享主机计划上配置 PHPMailer
- r - 如何在一组列上返回逻辑向量
- flutter - 自定义滚动视图在 Sliver Persistent Header 下滚动
- openssl - apache cassandra SSL 使用公共证书颁发机构?
- amazon-web-services - 重启 ECS Fargate 服务时如何避免宕机?
- css - 将地图放置在容器中时如何摆脱水平滚动条?