具有相同 'list' 类型(带和不带撇号 ' ')的两个列表之间的区别--python
Difference between two list with same 'list' type (with and without apostrophe ' ')--python
我有两个列表,list_1是我直接定义的,一个是用spaCy操作生成的,都是return一个'list'类型,但是它们明显不同,一个带'',一个不带''。
Question_1:
它们在python中是完全相同类型的列表吗?
import sys
import re
import spacy
from spacy.tokens import Token
nlp = spacy.load("en_core_web_sm")
nlp = spacy.load("en_core_web_md")
list_1 = ['apple', 'orange', 'banana', 'this is a dog']
print(list_1, type(list_1))
sentence = 'apple and orange and banana this is a dog'
doc = nlp(sentence)
list_2 = []
for i in doc.noun_chunks:
list_2.append(i)
print(list_2,type(list_2))
输出:
list_1: ['apple', 'orange', 'banana', 'this is a dog'] <class 'list'>
list_2: [apple, orange, banana, a dog] <class 'list'>
Question_2:
如何解决下面的错误?
我假设它们完全相同(类型),但是当我将 list_2 用作普通列表时,在下面的代码中,它 return 是一个错误。
for i in list_2:
if "dog" in i:
print(list_2.index(i))
错误:
TypeError Traceback (most recent call last)
<ipython-input-110-6f9c38535050> in <module>
16 print(list_2,type(list_2))
17 for i in list_2:
---> 18 if "dog" in i:
19 print(list_2.index(i))
20
TypeError: Argument 'other' has incorrect type (expected spacy.tokens.token.Token, got str)
谢谢!
看起来 spacy 给了你一个对象,而不仅仅是文本......当你使用 nlp 时,试试:
for i in doc.noun_chunks:
list_2.append(i.text)
这应该可以为您提供所需的 str 与 str 比较。
我有两个列表,list_1是我直接定义的,一个是用spaCy操作生成的,都是return一个'list'类型,但是它们明显不同,一个带'',一个不带''。
Question_1:
它们在python中是完全相同类型的列表吗?
import sys
import re
import spacy
from spacy.tokens import Token
nlp = spacy.load("en_core_web_sm")
nlp = spacy.load("en_core_web_md")
list_1 = ['apple', 'orange', 'banana', 'this is a dog']
print(list_1, type(list_1))
sentence = 'apple and orange and banana this is a dog'
doc = nlp(sentence)
list_2 = []
for i in doc.noun_chunks:
list_2.append(i)
print(list_2,type(list_2))
输出:
list_1: ['apple', 'orange', 'banana', 'this is a dog'] <class 'list'>
list_2: [apple, orange, banana, a dog] <class 'list'>
Question_2:
如何解决下面的错误?
我假设它们完全相同(类型),但是当我将 list_2 用作普通列表时,在下面的代码中,它 return 是一个错误。
for i in list_2:
if "dog" in i:
print(list_2.index(i))
错误:
TypeError Traceback (most recent call last)
<ipython-input-110-6f9c38535050> in <module>
16 print(list_2,type(list_2))
17 for i in list_2:
---> 18 if "dog" in i:
19 print(list_2.index(i))
20
TypeError: Argument 'other' has incorrect type (expected spacy.tokens.token.Token, got str)
谢谢!
看起来 spacy 给了你一个对象,而不仅仅是文本......当你使用 nlp 时,试试:
for i in doc.noun_chunks:
list_2.append(i.text)
这应该可以为您提供所需的 str 与 str 比较。