[英]extracting items using regular expression in python
我有一個具有以下內容的文件:
new=['{"TES1":"=TES0"}}', '{"""TES1:IDD""": """=0x3C""", """TES1:VCC""": """=0x00"""}']
我正在嘗試從列表中提取第一項TES1:= TES0。 我正在嘗試使用正則表達式來執行此操作。 這是我嘗試過的,但是我無法抓住第二項TES0。
import re
TES=re.compile('(TES[\d].)+')
for item in new:
result = TES.search(item)
print result.groups()
打印結果為('TES1:',)。 我嘗試了多種方法來提取它,但是總是得到相同的結果。 任何建議或幫助表示贊賞。 謝謝!
我認為您正在尋找findall
:
import re
TES=re.compile('TES[\d].')
for item in new:
result = TES.findall(item)
print result
您可以使用單個替換,例如:
import re
result = re.sub(r'{"(TES\d)":"(=TES\d)"}}', '$1:$2', yourstr, 1)
第一選擇(帶引號)
要匹配"TES1":"=TES0"
,可以使用此正則表達式:
"TES\d+":"=TES\d+"
像這樣:
match = re.search(r'"TES\d+":"=TES\d+"', subject)
if match:
result = match.group()
第二種選擇(不帶引號)
如果要刪除引號,例如TES1:=TES0
,請使用此正則表達式:
搜索: "(TES\\d+)":"(=TES\\d+)"
替換: \\1:\\2
像這樣:
result = re.sub(r'"(TES\d+)":"(=TES\d+)"', r"\1:\2", subject)
它是如何工作的?
"(TES\d+)":"(=TES\d+)"
"
(TES\\d+)
TES
\\d+
+
":"
(=TES\\d+)
=TES
\\d+
+
從字面上匹配字符“” "
\\ 1:\\ 2
插入通過捕獲組號1 \\1
最后匹配的文本
:
\\2
最后匹配的文本
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.