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:字符串操作码参数必须引用
发布于 2017-11-28 12:43:56
必须将包含腌制数据的文件写入二进制文件并作为二进制文件读取。有关示例,请参见文献资料。
您的提取函数应该如下所示:
def extract_skills(path):
with open(path, 'rb') as inputFile:
skills = pickle.load(inputFile)当然,还需要将数据转储到二进制打开的文件中:
def save_skills(path, skills):
with open(path, 'wb') as outputFile:
pickle.dump(outputFile, skills)此外,您的主要逻辑似乎有一点缺陷。当脚本作为主模块运行时,if __name__ == '__main__'后面的代码才会执行,而在main中是而不是的代码应该是静态的,即定义。基本上,您的脚本不应该执行任何操作,除非以main形式运行。这是一个更干净的版本。
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)https://stackoverflow.com/questions/47531812
复制相似问题