Ваш код в настоящее время исключает только те строки, которые полностью состоят из символов, отличных от ASCII. Однако все показанные вами примеры строк содержат символ подчеркивания, который является символом ASCII и поэтому делает имя действительным в соответствии с вашим текущим кодом.
Если это не тот результат, который вам нужен, вам нужно изменить, как работает ваш код. Например, вы можете отклонить любую строку с любыми не-ASCII символами (а не только теми, которые все не-ASCII). Просто измените if len(text) == non_ascii
на if non_ascii > 0
.
Но я бы предупредил вас, что исключение всех строк с не-ASCII-символами может быть плохой идеей. Многие англоязычные слова (например, café) и имена (например, Zoë) содержат символы не ASCII (по крайней мере, в некоторых написаниях). Может быть, лучше поддержать в вашей программе названия, отличные от ASCII, и исправить любые другие проблемы, которые они вызывают в других местах (например, путем правильного кодирования ваших входов и выходов). Если заголовки не ASCII нежелательны по другим причинам (например, они описывают вещи, которые не на английском языке), то вам следует отфильтровать их по этому другому критерию (например, по языку содержимого), а не по видам букв в заголовке. .