簡體   English   中英

打印語句后,Python代碼的工作方式有所不同

[英]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.

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