2024-05-28 20:05:53 发布
网友
以下代码:
import re print(re.sub('[^a-zA-Z0-9]', '', ',Inc.', re.IGNORECASE).lower()) print(re.sub('[^a-zA-Z0-9]', '', ', Inc.', re.IGNORECASE).lower())
产生:
inc inc.
https://repl.it/repls/RightThankfulMaintenance
为什么?
从doco开始,re.sub签名是:
re.sub
re.sub(pattern, repl, string, count=0, flags=0)
因此,让我们基于此检查您的通话:
re.sub('[^a-zA-Z0-9]', '' , ', Inc.', re.IGNORECASE) # default # < pattern > <repl> <string> < count > <flags>
您正在传递标志re.IGNORECASE(如果您print(int(re.IGNORECASE)),它的值为2,尽管我怀疑这在任何地方都不是强制的)作为要使用的计数
re.IGNORECASE
print(int(re.IGNORECASE))
2
所以它最多只做两个替换,在第二个例子中,逗号和空格在开头。它也在您的第一个示例中做到了这一点,只是只有一个字符匹配,而不是三个,所以您没有注意到
相反,您应该使用:
>>> re.sub('[^a-zA-Z0-9]', '', ', Inc.', flags=re.IGNORECASE).lower() 'inc'
从doco开始,
re.sub
签名是:因此,让我们基于此检查您的通话:
您正在传递标志
re.IGNORECASE
(如果您print(int(re.IGNORECASE))
,它的值为2
,尽管我怀疑这在任何地方都不是强制的)作为要使用的计数所以它最多只做两个替换,在第二个例子中,逗号和空格在开头。它也在您的第一个示例中做到了这一点,只是只有一个字符匹配,而不是三个,所以您没有注意到
相反,您应该使用:
相关问题 更多 >
编程相关推荐