在python中,如何解析出现在同一字符串后面的值?

2024-04-24 06:13:43 发布

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

我有一个类似这样的输入文本(实际的文本文件也包含了大量围绕这2个字符串的垃圾字符)

(random_garbage_char_here)**value=xxx**;(random_garbage_char_here)**value=yyy**;(random_garbage_char_here)

我正在尝试解析文本以存储如下内容: value1="xxx"value2="yyy"。 我编写的python代码如下:

^{pr2}$

但它总是返回:

^{3}$

有谁能告诉我如何解析文本,以便输出:

value=xxx
value=yyy

Tags: 字符串文本内容herevaluerandom字符垃圾
3条回答

使用regex方法:

re.findall(r'\bvalue=[^;]*', s)

或者-如果value可以是任何1+单词(字母/数字/下划线)字符:

^{pr2}$

参见regex demo

详细信息

  • \b-单词边界
  • value=-一个文本字符序列value=
  • [^;]*-除;之外的零个或多个字符。在

请参见Python demo

import re
rx = re.compile(r"\bvalue=[^;]*")
s = "$%$%&^(&value=xxx;$%^$%^$&^%^*value=yyy;%$#^%"
res = rx.findall(s)
print(res)

使用regex从“垃圾字符”中筛选所需的数据:

>>> import re
>>> _input = '#4@5%value=xxx38u952035983049;3^&^*(^%$3value=yyy#%$#^&*^%;$#%$#^'
>>> matches = re.findall(r'[a-zA-Z0-9]+=[a-zA-Z0-9]+', _input)
>>> matches
['value=xxx', 'value=yyy']
>>> for match in matches:
    print(match)


value=xxx
value=yyy
>>> 

摘要或正则表达式:

  • [a-zA-Z0-9]+:一个或多个字母数字字符
  • =:文字等号
  • [a-zA-Z0-9]+:一个或多个字母数字字符

对于此输入:

content = '(random_garbage_char_here)**value=xxx**;(random_garbage_char_here)**value=yyy**;(random_garbage_char_here)'

使用一个简单的regex并手动删除前两个字符和最后两个字符:

^{pr2}$

输出:

value=xxx
value=yyy

这里的假设是始终有两个前导和两个尾随*,如**value=xxx**。在

相关问题 更多 >