簡體   English   中英

Python喜歡使用正則表達式進行sed

[英]Python like sed using regexes

假設我有:

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

現在使用像Perl / sed這樣的字符串,我想

string=id

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

您能否給我一些見識,如何在python中做到這一點? 我希望regex語法相似,但是我不確定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。

我去了Google並輸入了關鍵字: 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM