Python 3.x 不易损坏类型:';列表';在csv文件中工作时

Python 3.x 不易损坏类型:';列表';在csv文件中工作时,python-3.x,list,jupyter-notebook,Python 3.x,List,Jupyter Notebook,在使用NLTK的stop_words函数处理csv文件时,为什么会出现错误以及如何修复 from nltk.tokenize import word_tokenize import os import openpyxl import pandas as pd import numpy as np narr=pd.read_csv('C:\\Users\\lenovo\\Desktop\\ narr.csv') narr.head(5) narr['Narration'].dropna(inp

在使用NLTK的stop_words函数处理csv文件时,为什么会出现错误以及如何修复


from nltk.tokenize import word_tokenize
import os
import openpyxl
import pandas as pd
import numpy as np

narr=pd.read_csv('C:\\Users\\lenovo\\Desktop\\ narr.csv')
narr.head(5)
narr['Narration'].dropna(inplace=True)
tokens = narr['Narration'].apply(word_tokenize)

stop_words = set(stopwords.words('english'))
tokens = [w for w in tokens if not w in stop_words]
print(tokens)```



---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-32-078c03604087> in <module>
     13 
     14 stop_words = set(stopwords.words('english'))
---> 15 tokens = [w for w in tokens if not w in stop_words]
     16 print(tokens)

<ipython-input-32-078c03604087> in <listcomp>(.0)
     13 
     14 stop_words = set(stopwords.words('english'))
---> 15 tokens = [w for w in tokens if not w in stop_words]
     16 print(tokens)

TypeError: unhashable type: 'list'
在使用NLTK的stop_words函数处理csv文件时,为什么会出现错误以及如何修复


from nltk.tokenize import word_tokenize
import os
import openpyxl
import pandas as pd
import numpy as np

narr=pd.read_csv('C:\\Users\\lenovo\\Desktop\\ narr.csv')
narr.head(5)
narr['Narration'].dropna(inplace=True)
tokens = narr['Narration'].apply(word_tokenize)

stop_words = set(stopwords.words('english'))
tokens = [w for w in tokens if not w in stop_words]
print(tokens)```



---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-32-078c03604087> in <module>
     13 
     14 stop_words = set(stopwords.words('english'))
---> 15 tokens = [w for w in tokens if not w in stop_words]
     16 print(tokens)

<ipython-input-32-078c03604087> in <listcomp>(.0)
     13 
     14 stop_words = set(stopwords.words('english'))
---> 15 tokens = [w for w in tokens if not w in stop_words]
     16 print(tokens)

TypeError: unhashable type: 'list'

从nltk.tokenize导入单词\u tokenize
导入操作系统
导入openpyxl
作为pd进口熊猫
将numpy作为np导入
narr=pd.read\u csv('C:\\Users\\lenovo\\Desktop\\narr.csv')
纳尔头(5)
narr['attransation'].dropna(inplace=True)
tokens=narr[‘旁白’]。应用(word_tokenize)
stop_words=set(stopwords.words('english'))
代币=[w表示代币中的w,如果在停止词中不是w]
打印(代币)```
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在里面
13
14 stop_words=set(stopwords.words('english'))
--->15代币=[w代表代币中的w,如果在停止词中不是w]
16打印(代币)
英寸(.0)
13
14 stop_words=set(stopwords.words('english'))
--->15代币=[w代表代币中的w,如果在停止词中不是w]
16打印(代币)
TypeError:不可损坏的类型:“列表”

令牌似乎是列表的列表,您无法检查列表是否在集合中,因为可变对象通常不可散列

你可以尝试一些解决办法

将其转换为一个元组,但如果元组不在stop_words中,这将不起作用:

tokens = [w for w in tokens if not tuple(w) in stop_words]
或者,链接令牌,但如果令牌是一个包含字符串和其他列表的混合列表,这将不起作用:

from itertools import chain
tokens = [w for w in chain.from_iterable(tokens) if not tuple(w) in stop_words]

或者,只需确保标记是字符串列表

标记似乎是列表列表,您无法检查列表是否在集合中,因为可变对象通常不可散列

你可以尝试一些解决办法

将其转换为一个元组,但如果元组不在stop_words中,这将不起作用:

tokens = [w for w in tokens if not tuple(w) in stop_words]
或者,链接令牌,但如果令牌是一个包含字符串和其他列表的混合列表,这将不起作用:

from itertools import chain
tokens = [w for w in chain.from_iterable(tokens) if not tuple(w) in stop_words]
或者,只需确保令牌是字符串列表