Python文本处理代码遇Unicodeescape语法错误,求r前缀添加位置
推特文本处理Python代码Unicode转义错误解决
错误信息
Cell In[11], line 82 "]+", flags=re.UNICODE) ^ SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 11-19: truncated \UXXXXXXXX escape
问题定位
你误以为错误出在文件读取或用户名处理的代码段,但实际问题在**remove_emojis函数的正则表达式定义**中。
错误原因
Python会将普通字符串中的\U解析为Unicode转义序列,要求后面必须跟8位十六进制数。你的正则字符串里包含多个\U开头的Unicode范围,没有使用原始字符串标记,导致Python尝试解析这些\U,最终触发转义截断错误。
解决方案
给正则表达式字符串添加r前缀(转为原始字符串),同时修复函数内的变量名错误(把string改为tweet),修正后的remove_emojis函数如下:
def remove_emojis(tweet): # 添加r前缀,让Python不解析字符串内的转义字符 remove_emojis = re.compile(r"[" u"\U00002700-\U000027BF" # Dingbats u"\U0001F600-\U0001F64F" # Emoticons u"\U00002600-\U000026FF" # Miscellaneous Symbols u"\U0001F300-\U0001F5FF" # symbols & pictographs u"\U0001F680-\U0001F6FF" # Transport & Map Symbols u"\U0001F1E0-\U0001F1FF" # FLAGS (IOS) u"\U00002500-\U00002BEF" # 中文字符 u"\U00002702-\U00027B0" u"\U000024C2-\U0001F251" u"\U0001f926-\U000f937" u"\U00010000-\U0010ffff" u"\u2640-\u2642" u"\u2600-\u2B55" u"\u200d" u"\u23cf" u"\u23e9" u"\u231a" u"\ufe0f" # dingbats u"\u3030" "]+", flags=re.UNICODE) # 修正变量名:将string改为传入的tweet参数 return remove_emojis.sub(r'', tweet)
额外代码修复
你的remove_stopwords函数也存在逻辑错误,当前代码会把输入文本的每个字符当作独立元素处理,导致结果为嵌套列表。修正后的函数如下:
def remove_stopwords(tweet_text): return [word for word in gensim.utils.simple_preprocess(tweet_text) if word not in stop_words]
内容的提问来源于stack exchange,提问作者Nur Hidayah Athira
相关产品推荐
相关产品推荐

