簡體   English   中英

Python 中的 re.search(pattern, stringOfText) 返回什么數據類型? 整數還是字符串?

[英]what data type is returned by re.search(pattern, stringOfText) in Python? An int or string?

考慮下面的代碼。 有人告訴我,如果 regExMagic() 在文本字符串中找不到 Lucy 的匹配項,它會向 regExMagic() 返回“None”。 既然“None”已經是一個字符串,為什么我們還需要在下面的比較中將 regExMagic() 包裝在 str() 中?

有趣的是,當我刪除 str() 時,它只為每一行(下圖)執行 else 語句(此處未顯示),並且它沒有拋出任何 TypeError 異常,我試圖比較兩種不同的類型,假設 int 可以已返回到 regExMagic()。 但是由於只有 else 被執行,那么它可能甚至都不會拋出異常?

所以我的主要問題是為什么我們需要在這種情況下包含 str(),即使在我被告知 regExMagic() 時返回“None”?

我在這里錯過了什么嗎?

import re

def regExMagic(pattern, string):
    objectMatch = re.search(pattern, string)
    return objectMatch

def readingLinesWithRegEx():

    try:
        with open('people.txt') as file_object:
            contents = file_object.readlines()

            for line in contents:
                pattern = 'HEllo$'

                if str(regExMagic(pattern, line)) == "None":
                    print(line)

它返回值None (其類型為NoneType ),而不是字符串"None" 因此,如果要將其與字符串進行比較,則必須對其進行轉換。

但是直接比較而不轉換更簡單:

if regExMagic(pattern, line) is None:
    print(line)

您也可以只測試真值,因為它返回的任何其他值都將是非假 object。 所以只要寫:

if not regExMagic(pattern, line):
    print(line)

暫無
暫無

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

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