Python 正则表达式库 re 是在字符串为空时计算一个单词

Python regex library re is counts a word when string is empty

情况如下:

用下面的一段代码:

import re

content = ''
count = len(re.split('\W+', content, flags=re.UNICODE))

print(count)

# Output is expected to be 0, as it has no words
# Instead output is 1

出了什么问题?所有其他字数都是正确的。

编辑: 当我们使用字符串 content = '..'content = '.!' 时也会发生这种情况,因此在 NOT 在任何意义上与 python 的 split() 函数相关但与 [=15= 中的正则表达式相关的问题].

重要提示:虽然我给出的解决方案在我的特定情况下有效,但尚未找到正确的解决方案。因为这是一个尚未 100% 解决的正则表达式问题!

找到原因了:

当使用re.split()时,它根据给定的正则表达式拆分一个字符串,returns 一个字符串数组。如果字符串是空的,因此没有什么可分割的,它显然是 return 一个包含空字符串的数组 ([''])。因此,当使用 len() 函数时,它计算一个包含 1 个元素的数组。

解决这个问题的代码如下:

import re

content = ''
count = [len(re.split('\W+', content, flags=re.UNICODE)), 0][content == '']

print(count)

# Output is as expected, 0, by using a simple if statement
# that verifies if string is empty, when it's empty it return 0,
# otherwise, it returns the word count.