【发布时间】:2018-11-14 05:35:50
【问题描述】:
我一直在计算句子中标点符号的百分比。出于某种原因,我的函数在进行双倍间距时有效,但会计算所有字符和空格。例如,我有一个文本DEACTIVATE: OK,所以当我减去标点符号时总长度是 14,那么长度是 13,所以百分比应该是 1/13 = 7.63%,但是,我的函数给了我 7.14%,基本上是 1/14 = 7.14%。
另一方面,如果只有一个空格,我的函数会抛出一个错误
"ZeroDivisionError: division by zero".
这是我的代码供您参考和一个简单的文本示例
text= "Centre to position, remaining shift is still larger than maximum (retry nbr=1, centring_stroke.r=2.7662e-05, max centring stroke.r=2.5e-05)"
text2= "DEACTIVATE: KU-1421"
导入字符串
def count_punct(text):
count = sum([1 for char in text if char in string.punctuation])
return round(count/(len(text) - text.count(" ")), 3)*100
df_sub['punct%'] = df_sub['Err_Text2'].apply(lambda x: count_punct(x))
df_sub.head(20)
【问题讨论】:
-
上面的代码有两个空格(text.count(" "))。我收到错误的代码是单个空格(text.count(“”))。
-
这不是百分比的工作原理。你不减去标点字符的数量,它只是
(number of punctuation characters) / (length of string),除非你的意思是减去空格,而不是标点符号。 -
你的意思是像这样“return round((count)/(len(text) - text.count(" ")), 3)*100”?我仍然遇到同样的错误。
-
你的错误是被零除?这意味着你传入了一些完全空格或空的字符串。
-
这就是我无法弄清楚的。任何建议或意见将不胜感激。
标签: python percentage punctuation