首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >泡菜的工作方式不恰当

泡菜的工作方式不恰当
EN

Stack Overflow用户
提问于 2017-11-28 12:36:52
回答 1查看 16.6K关注 0票数 1
代码语言:javascript
复制
import nltk
import pickle

input_file=open('file.txt', 'r')
input_datafile=open('newskills1.txt', 'r')

string=input_file.read()
fp=(input_datafile.read().splitlines())

def extract_skills(string):
    skills=pickle.load(fp)
    skill_set=[]
    for skill in skills:
        skill= ''+skill+''
    if skill.lower() in string:
        skill_set.append(skill)
    return skill_set

if __name__ == '__main__':
    skills= extract_skills(string)
print(skills)

我想从文件中打印skills,但是,在这里,pickle不工作。

它显示了错误:

_pickle.UnpicklingError:字符串操作码参数必须引用

EN

回答 1

Stack Overflow用户

发布于 2017-11-28 12:43:56

必须将包含腌制数据的文件写入二进制文件并作为二进制文件读取。有关示例,请参见文献资料

您的提取函数应该如下所示:

代码语言:javascript
复制
def extract_skills(path):
    with open(path, 'rb') as inputFile:
        skills = pickle.load(inputFile)

当然,还需要将数据转储到二进制打开的文件中:

代码语言:javascript
复制
def save_skills(path, skills):
    with open(path, 'wb') as outputFile:
        pickle.dump(outputFile, skills)

此外,您的主要逻辑似乎有一点缺陷。当脚本作为主模块运行时,if __name__ == '__main__'后面的代码才会执行,而在main中是而不是的代码应该是静态的,即定义。基本上,您的脚本不应该执行任何操作,除非以main形式运行。这是一个更干净的版本。

代码语言:javascript
复制
import pickle

def extract_skills(path):
    ...

def save_skills(path, skills):
    ...

if __name__ == '__main__':
    inputPath = "skills_input.pickle"
    outputPath = "skills_output.pickle"

    skills = extract_skills(inputPath)
    # Modify skills
    save_skills(outputPath, skills)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47531812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档