1

假设我有:

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

现在使用像 Perl/sed 这样的字符串,我想得到

string=id

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

您能否给我一些见解如何在 python 中做到这一点?我希望正则表达式语法会相似,但我不确定 python 语法以及我应该使用哪些导入,我是 Python 的初学者 :) 非常感谢 :-)

4

2 回答 2

1

在 Python 中,您将使用该re模块进行正则表达式操作。我稍微修改了你的正则表达式,但一般来说,这就是在 python 中如何进行正则表达式替换:

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

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

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

于 2012-04-20T18:41:27.637 回答
0

首先,我同意@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()
于 2012-04-20T18:54:36.397 回答