假设我有:
string= '{'id': '1'}'
现在使用像 Perl/sed 这样的字符串,我想得到
string=id
(在 Perl 中,它看起来像 string=~s/{\'([a-zA-Z0-9] )\'. $)/\1/ )
您能否给我一些见解如何在 python 中做到这一点?我希望正则表达式语法会相似,但我不确定 python 语法以及我应该使用哪些导入,我是 Python 的初学者 :) 非常感谢 :-)
在 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 将它们视为“原始”字符串,其中大多数反斜杠转义序列都不会被解释。
首先,我同意@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()