= sub('[^a-z ]',"",s,I)
                  
                  
                      print(s) # co_ol f0un%(c)t-io"n
                  
                  
                      print(ans) # cool fun%(c)t-io"n
                  
                  
                      return ans
                  
                  
                  Почему sub не удаляет все символы которые входят в сет, т.е. не буквы и не пробел? А удаляет только underscore и 0?
                  
                  
                  
                  
                  
                  А вот так работает:
                  
                  
                  from re import sub, match, I
                  
                  
                  def remove_chars(s):
                  
                  
                      ans = str("".join(x for x in s if match('[a-z ]',x)))
                  
                  
                      print(s)
                  
                  
                      print(ans)
                  
                  
                      return ans
                  
                  
                  
                  
                  
                  
                  
                  
                   В чем же секрет не функционирования sub?
                  
                  
                
Ошибка в том, что в методе re.sub флаг игнорирования регистра стоит на месте аргумента count.
Обсуждают сегодня