我有一个文件,其中包含以下内容:
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:',)。我已经尝试了各种方法来提取它,但我总是得到相同的结果。任何建议或帮助表示赞赏。谢谢!
答案 0 :(得分:1)
我认为您正在寻找findall
:
import re
TES=re.compile('TES[\d].')
for item in new:
result = TES.findall(item)
print result
答案 1 :(得分:0)
您可以使用单个替换,例如:
import re
result = re.sub(r'{"(TES\d)":"(=TES\d)"}}', '$1:$2', yourstr, 1)
答案 2 :(得分:0)
第一个选项(带引号)
要匹配"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