re.sub erroring with “Expected string or bytes-like object”

前端 未结 3 1568
青春惊慌失措
青春惊慌失措 2020-11-29 05:10

I have read multiple posts regarding this error, but I still can\'t figure it out. When I try to loop through my function:

def fix_Plan(location):
    letter         


        
相关标签:
3条回答
  • 2020-11-29 05:20

    I suppose better would be to use re.match() function. here is an example which may help you.

    import re
    import nltk
    from nltk.tokenize import word_tokenize
    nltk.download('punkt')
    sentences = word_tokenize("I love to learn NLP \n 'a :(")
    #for i in range(len(sentences)):
    sentences = [word.lower() for word in sentences if re.match('^[a-zA-Z]+', word)]  
    sentences
    
    0 讨论(0)
  • 2020-11-29 05:32

    As you stated in the comments, some of the values appeared to be floats, not strings. You will need to change it to strings before passing it to re.sub. The simplest way is to change location to str(location) when using re.sub. It wouldn't hurt to do it anyways even if it's already a str.

    letters_only = re.sub("[^a-zA-Z]",  # Search for all non-letters
                              " ",          # Replace all non-letters with spaces
                              str(location))
    
    0 讨论(0)
  • 2020-11-29 05:45

    The simplest solution is to apply Python str function to the column you are trying to loop through.

    If you are using pandas, this can be implemented as:

    dataframe['column_name']=dataframe['column_name'].apply(str)
    
    0 讨论(0)
提交回复
热议问题