Я работал над вычислением процента знаков препинания в предложении. По какой-то причине моя функция работает при выполнении двойного интервала, но подсчитывает все символы и пробелы. Например, у меня есть текст 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)