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.
情况如下:
用下面的一段代码:
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.