首页 > 解决方案 > python3.5中的ValueError

问题描述

我经常收到此错误“ValueError: not enough values to unpack (expected 2, got 1)in for(word,tag) in grp:" 这是我尝试过的 # - - 编码:utf-8 - - import nltk import itertools import ast import collections import sys import re import time

f=open('test.txt','r')
text1=f.read()
text2=text1.rstrip()
text3=text2.strip()
#text3=tuple(text1)
#print(text3)

print("text3")


train_data=text3


print(train_data)

f=open('test1.txt','r')
text5=f.read()
#text6=text5.splitlines()
text6=text5.strip()
text7=text6.rstrip()
orig_data=text7

标签: pythonpython-3.x

解决方案


所以,train_data只是一个str。请注意您是如何从文件中读取它的,并且不做任何事情来将其更改为代码。如果您想确认,请致电print(type(train_data))。你会得到<class 'str'>.

您可以使用 for 循环遍历 a str,这就是您的第一个循环有效的原因,但在您的第二个循环中,您只是循环遍历原始 str 中的字符。

如果要将其用作实际数据,则必须对其进行解析并将其转换为 Python 数据结构。不要为此使用 EVAL。而是使用ast库(在数据出现错误的情况下更安全、更稳定):

import ast
# … later …
train_data = ast.literal_eval(text3)

然后继续使用train_data,就像你使用它一样。


推荐阅读