繁体   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