python - 正则表达式替换无法在Python中用正则表达式变量替换

标签 python python-3.x regex

我们有大量文件需要转换为 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 Demo

代码:

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 中的逗号或行尾

关于python - 正则表达式替换无法在Python中用正则表达式变量替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65318081/

相关文章:

python - Flask:获取当前路线

python - 无法从使用 BeautifulSoup 传递 URL 的结果中删除前导空格

java - 在 Java 中使用正则表达式从格式为 01OCT12 14 :26 的字符串中提取日期

python - 从另外两个列表派生新的列表列表,如果 L1 中的元素不在 L2 中,则附加这些元素

python - 无法在正则表达式中检测到 '-' 字符

css - 为什么这个正则表达式不匹配 VSCode 搜索和替换中的任何内容?

python - 如何创建一个包含子元素的列表(Python 元素树)

Python 2.6 urlib2 超时问题

javascript - Selenium 不会点击最上面的元素

python - 如何打印列表的某些部分?