簡體   English   中英

在 python 中查找確切的字符串

[英]Finding exact string in python

我正在嘗試使用 python 讀取文件,並使用帶有“設備 1”字符串的單獨行。 用戶將給出關於他想找到什么設備 1、設備 2 等的輸入。 當我嘗試搜索具有“設備 1”的行時,它會找到所有其他具有“設備 11”、“設備 12”直到“設備 19”的行。 我正在嘗試使用正則表達式來做到這一點。 我還嘗試使用 for 循環和 in 運算符,例如; 對於字符串中的設備 1 .. 但它不起作用。

有沒有其他人遇到過同樣的問題,有沒有辦法匹配確切的字符串設備 1 而不是設備 11。

更具體地說,我正在嘗試做這樣的事情:

def device_status(line_num, dev_num):
    device_num = str(dev_num)
    device = 'Device ' + device_num
    f = open(filename, 'r')
    lines = f.readlines()
    for string in lines:
        if line_num in string:
            if re.search(device, string):
                print(string)
            else:
                continue

我必須收到帶有字符串“設備”的 append 設備號。 當我在 re.search 中傳遞設備時,我無法以原始字符串格式使用它,就像我這樣做一樣,它沒有被正確解釋。 因此,我也無法使用任何單詞邊界。

在這種情況下我應該怎么做?

您應該將邊界與 \b 一起使用您應該將單詞邊界與\b一起使用,如下例所示:

\bDevice1\b

例子

我不明白為什么你不能使用單詞邊界,但這是一個帶有負前瞻( ?! )的解決方案,它排除了你當前正在尋找的設備號之后的數字( \d ):

device = 'Device ' + device_num
pattern = device + "(?!\d)"

嘗試通過一些示例為您提供:

print(re.search(pattern, "Device 1 blabla"))
print(re.search(pattern, "Device 12 blabla"))
print(re.search(pattern, "Device 19blabla"))

# outputs
# <re.Match object; span=(0, 8), match='Device 1'>
# None
# None

暫無
暫無

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

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