通过刮擦管道刮擦时,字典中的“ TypeError:'unicode'对象不支持项目分配”

Fal*_*ces 4 python unicode dictionary scrapy

我正在尝试建立关键字词典并将其放入一个拼凑的项目中。

'post_keywords':{1: 'midwest', 2: 'i-70',}
Run Code Online (Sandbox Code Playgroud)

关键是这将在以后的所有操作中全部放入json对象中。我尝试过先初始化一个新的空白字典,但这是行不通的。

管道代码:

tag_count = 0

for word, tag in blob.tags:
    if tag == 'NN':
        tag_count = tag_count+1
        nouns.append(word.lemmatize())

keyword_dict = dict()

key = 0 
for item in random.sample(nouns, tag_count):
    word = Word(item)
    key=key+1
    keyword_dict[key] = word
    item['post_keywords'] = keyword_dict
Run Code Online (Sandbox Code Playgroud)

项目:

post_keywords = scrapy.Field()
Run Code Online (Sandbox Code Playgroud)

输出:

Traceback (most recent call last):
File "B:\Mega Sync\Programming\job_scrape\lib\site-packages\twisted\internet\defer.py", line 588, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "B:\Mega Sync\Programming\job_scrape\cl_tech\cl_tech\pipelines.py", line215, in process_item
item['post_noun_phrases'] = noun_phrase_dict
TypeError: 'unicode' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

SEEMS就像管道一样,表现怪异,就像它们不想在管道中运行所有代码,除非所有项目分配都签出,这使得它不会创建我初始化的字典。

Fal*_*ces 5

感谢MarkTolonen的帮助。

我的错误是使用变量名称“ item”进行了两件事。

这有效:

for thing in random.sample(nouns, tag_count):
            word = Word(thing)
            key=key+1
            keyword_dict[key] = word
            item['post_keywords'] = keyword_dict
Run Code Online (Sandbox Code Playgroud)