python - 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
解决方案
所以,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
,就像你使用它一样。
推荐阅读
- javascript - javascript中的队列逻辑
- c# - 应该在单元测试中模拟简单的类还是应该直接使用/测试它们?
- nestjs - 在调试中从监视中排除“上传”文件夹
- php - php:如何从 array_merge 中提取数据
- python - 针对 Jupyter Notebooks 的 Python 包中的错误处理
- python - 使用 Python 生成方形分形
- c++ - 实现有限状态机:运行时错误,为什么?
- java - JUnit jar 文件的 GitHub 位置
- c# - 在 C# Windows Forms 应用程序中使用 EF 连接到 SQL Server 和 mySql 时出错
- apache-spark - 将 null 替换为 spark 数据框中所有行的自动递增唯一值,并且所有重复行应具有相同的 unique_id 值