使用正则表达式的类Python sed

2024-05-23 19:23:50 发布

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

假设我有:

string= '{'id': '1'}'

现在使用Perl/sed中的字符串

string=id

(在Perl中,它看起来像string=~s/{'([a-zA-Z0-9])\'。$)/\1/)

你能给我一点用python怎么做的见解吗?我希望regex语法是类似的,但是我不确定python语法和应该使用什么样的导入,我对python很熟悉:)非常感谢:-)


Tags: 字符串idstring语法sedperlregexza
2条回答

在Python中,您可以使用re模块进行正则表达式操作。我对正则表达式做了一些修改,但一般来说,在python中正则表达式的替换是这样的:

>>> import re
>>> s = "{'id': '1'}"
>>> re.sub(r"{'([^\']*)'.*$", r'\1', string)
'id'

sub()函数首先接受regex,然后是替换,最后是字符串。re模块的文档包含更多信息: http://docs.python.org/library/re.html

作为参数传递的字符串的r前缀基本上告诉Python将它们视为“原始”字符串,其中大多数反斜杠转义序列都不会被解释。

首先,我同意@PenguinCoder:由于这是有效的JSON,您应该考虑使用Python支持来处理JSON。

我去了谷歌,输入了关键词:Python regular expressions

下面是前两首热门歌曲:

http://docs.python.org/library/re.html

http://docs.python.org/howto/regex.html

如果你读了它们,你就会找到答案。

以下是工作代码:

import re

s = '''string= "{'id': '1'}"'''

pat = re.compile(r"\s*([^=]+)\s*=[\s'\"]*{\s*'([^']+)'")

m = pat.match(s)

if m is not None:
    id = m.group(1)
    name = m.group(2)
    result = "%s=%s" % (id, name)
    # note: could also do this: result = "%s=%s" % m.groups()

相关问题 更多 >