如何在python中使用regex区分列表模式

2024-05-14 03:17:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试在不使用python包的情况下将XML转换为JSON。为此,我将XML转换为一个列表,该列表最终将转换为嵌套字典,然后再转换为JSON。从列表中读取XML时,我无法区分以下元素:

  1. <Description>TestData</Description>\n
  2. Data</Description>\n
  3. <Description>Test\n

我用来区分1和3的正则表达式是:

  1. x = re.compile("<Description>(.+?)<\/Description>\n")
  2. x = re.compile("^((?!Description).)*<\/Description>\\n")

我发现很难为第三个开发正则表达式。你知道吗

  1. x = re.compile("\s*<Description>(.+)(?!((<\/Description>)))\n")

尽管第二个正则表达式正确地标识了文本3,但它也标识了文本1。这应该只识别文本3。你知道吗


Tags: test文本rejson元素列表data字典
2条回答

你想要这样的东西吗?你知道吗

<Description>([^<]+)\n

Demo

python脚本是

 ss=""" <Description>TestData</Description>\n
  Data</Description>\n
  <Description>Test\n"""

regx= re.compile("<Description>([^<]+)\n")
capture=regx.findall(ss)
print(capture)

输出为

['Test']

似乎capture[0]值就是你想要的。。你知道吗

你很接近。这个正则表达式可以满足您的需要:

re.compile("\s*<Description>(.+)(?<!<\/Description>)\n")

我刚在两个字母之间加了“<;”?还有!做一个否定的后视断言。查看此项以获取更多信息:https://docs.python.org/2/library/re.html

相关问题 更多 >