![](/img/trans.png)
[英]In python I have a print statement after my else: yet it does not seem to actually print it after running the code
[英]Python code working differently after a print statement
我正在嘗試使用正則表達式來搜索字典中的鍵並返回匹配項。 下面的代碼從實際代碼中進行了簡化,但顯示了該問題。
#!/bin/python
# Import standard Python modules
import os, sys, string, pdb, re
key=""
pat=""
steps = {"pcb":"xxx","aoi":"xxx","pcb-pec":"xxx","pcb_1":"xxx"}
pat = "pcb"
print"***Search the dict***"
for key in steps:
print re.search(key,pat)
print"***Search the key***"
key = "pcb-pec"
pat = "pcb"
print re.search(key,pat)
print"***Search the key after printing it***"
key = "pcb-pec"
pat = "pcb"
print 'key:' + key+ ' ,pattern:' + pat
print re.search(pat,key)
exit()
輸出是這樣的:
***Search the dict***
<_sre.SRE_Match object at 0x00000000031FBC60>
None
None
None
***Search the key***
None
***Search the key after printing it***
key:pcb-pec ,pattern:pcb
<_sre.SRE_Match object at 0x00000000031FBC60>
我不明白為什么在第三和第四鍵上找不到該模式。
我不明白為什么在第二次測試中也找不到該模式。
我真的不明白為什么在第三項測試中發現它與第二項相同,但是帶有打印語句。
這是我的第一篇文章,但是通過搜索和閱讀本文,我學到了很多東西。 非常感謝你們。
re.search
的簽名(給定為re.search(pattern, string, flags=0)
)首先采用模式,然后采用字符串。
您應該交換參數的順序:
re.search(pat, key)
# ^^^^^^^^
然后其他鍵將起作用:
In [27]: pat = "pcb"
In [28]: key = "pcb-pec"
In [29]: re.search(key,pat) # wrong order
In [30]: re.search(pat,key) # right order
Out[30]: <_sre.SRE_Match object; span=(0, 3), match='pcb'>
在最后一種情況下,您可以更改參數的順序。 最初幾次您將它們亂序,最后一次是按正確的順序
re.search(pat,key)
是正確的順序。
在循環中,模式和字符串恰好相同的一次就得到了匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.