python - example - error en re.sub con "Cadena esperada u objeto similar a bytes"
python regex example (1)
He leído varias publicaciones con respecto a este error, pero todavía no puedo resolverlo. Cuando intento pasar por mi función:
def fix_Plan(location):
letters_only = re.sub("[^a-zA-Z]", # Search for all non-letters
" ", # Replace all non-letters with spaces
location) # Column and row to search
words = letters_only.lower().split()
stops = set(stopwords.words("english"))
meaningful_words = [w for w in words if not w in stops]
return (" ".join(meaningful_words))
col_Plan = fix_Plan(train["Plan"][0])
num_responses = train["Plan"].size
clean_Plan_responses = []
for i in range(0,num_responses):
clean_Plan_responses.append(fix_Plan(train["Plan"][i]))
Aquí está el error:
Traceback (most recent call last):
File "C:/Users/xxxxx/PycharmProjects/tronc/tronc2.py", line 48, in <module>
clean_Plan_responses.append(fix_Plan(train["Plan"][i]))
File "C:/Users/xxxxx/PycharmProjects/tronc/tronc2.py", line 22, in fix_Plan
location) # Column and row to search
File "C:/Users/xxxxx/AppData/Local/Programs/Python/Python36/lib/re.py", line 191, in sub
return _compile(pattern, flags).sub(repl, string, count)
TypeError: expected string or bytes-like object
Como mencionaste en los comentarios, algunos de los valores parecían ser flotantes, no cadenas. Deberá cambiarlo a cadenas antes de pasarlo a re.sub
. La forma más sencilla es cambiar la location
a str(location)
cuando se utiliza re.sub
. De todos modos, no estaría mal hacerlo, incluso si ya es una str
.
letters_only = re.sub("[^a-zA-Z]", # Search for all non-letters
" ", # Replace all non-letters with spaces
str(location))